php - 与 wamp 相比,服务器上的内存使用率较高

标签 php mysql wordpress performance server

最近我的网站(有 260000 个帖子、12000 个图像、2,360,987 个 mysql 行和 450.7 MiB 大小)运行缓慢,有时很多分钟都无法加载

我安装了这个调试栏插件 https://wordpress.org/plugins/debug-bar/

内存使用

在服务器上:174,319,288 字节

英特尔(R) 至强(R) CPU E3-1230 V2 @ 3.30GHz,16 GB (PHP:5.5.23、MySQL:5.6.23、Apache 2.4)

即使尝试禁用所有插件也没有多大帮助...它减少了 160-163,xxx,xxx 字节

wamp 上的大小:37,834,920 字节

(PHP:2012年5月5日,MySQL:2017年6月5日)

为什么差异这么大?如何发现问题?

一直在使用以下插件

Acunetix WP 安全 阿基斯梅特 反垃圾邮件蜂 云耀光 联系表 7 自定义帖子类型 UI 调试栏 登录锁定 重定向 主题试驾 W3 总缓存 WordPress 搜索引擎优化 WP-优化 WP 错过了日程

上述服务器的 my.cnf 值为

[mysqld]
slow-query-log=1
long-query-time=1
slow-query-log-file="/var/log/mysql-slow.log"
default-storage-engine = MyISAM
local-infile = 0
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_file_per_table=1
innodb_stats_on_metadata=0

max_connections=360
wait_timeout=60
connect_timeout = 15

thread_cache_size=20
thread_concurrency=8

key_buffer_size = 1024M
join_buffer_size = 2M
sort_buffer_size=1M

query_cache_limit=64M
query_cache_size=128M
query_cache_type=1

max_heap_table_size=32M
tmp_table_size=32MB
table_open_cache=1000
table_definition_cache=1024

open_files_limit=10000

max_allowed_packet=268435456


low_priority_updates=1
concurrent_insert=2


#port = 8881
#innodb_force_recovery=0
#innodb_purge_threads=0

最佳答案

“服务器”有 Apache;这解释了部分(全部?)差异。

Windows 和 Unix 处理内存的方式不同,测量内存的方式也不同。因此,差异可能无关紧要。

你引用的数字并不大;有什么问题吗?

“尝试重新启动服务器并在最初的时刻检查它”——这基本上是无关紧要的。程序往往会随着时间的推移而增长,直至达到一定限度。让我们看看典型负载下“稳态”下的值。

您有足够的 RAM 来将整个数据集缓存在 RAM 中。但是,由于不活动,可能大部分数据没有被触及,因此没有被读入缓存。

“高”内存使用率是在交换时。事实上,这可能“太高”了。所以,90% 是“高”。你的数字远不及这个。

innodb_buffer_pool_size=200M——不足以容纳整个 450.7MB 数据集,但是,正如我所说,大部分数据可能没有被积极使用。

编辑(发布设置后)

table_cache=10M

太可怕了!你不会开一千万张 table 。将其设置为 1000。

max_heap_table_size=512M
tmp_table_size=512MB

那些很危险。如果您有多个连接,每个连接都需要一个临时表(由于复杂的查询),您可能会很快耗尽内存。将它们设置为 32M。

innodb_force_recovery=3

注释掉该行——它将被使用一次,然后被删除。

其余设置对于本次讨论来说似乎无害。

关于php - 与 wamp 相比,服务器上的内存使用率较高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29548458/

相关文章:

PHP 正则表达式 : how to use newline in expression?

php - 在 Yii : how? 中使用 CArrayDataProvider 过滤 CGridView

mysql - 需要一个查询来选择一个距离当前字段为5的新字段

php - 帮助编辑 JSON 以生成数组而不是 'dictionary'

java - 将文件保存在磁盘上

加入 : SELECT only if multiple rows in join match

mysql - 在 Sequelize 中创建主键和外键关系

html - 如何将文件上传按钮放在幻灯片菜单中?

php - 对于没有托管库存的 WooCommerce 变体显示 "In Stock"通知

wordpress - 将所有页面重定向到新域