最近我的网站(有 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/