因此,我的 2GB RAM Linode 机器每天都会内存不足并随机崩溃一两次,而我却无法诊断出问题所在。我只有几个流量较低的 Wordpress/Woocommerce 网站,它们甚至可以很好地处理大流量。
我终于找到了一种复制问题的方法。我所需要做的就是进入我的商店页面,反复按下不同产品的“添加到购物车”按钮(它们使用 Ajax 在页面内添加到购物车),如果我操作得足够快,就会生成一堆 admin-ajax.php 调用(每个调用使用大约 5% 的内存),并且一些 wp-cron.php 也会开始弹出。然后服务器就会出问题,出现 oom killer,我需要重新启动 mysql 或服务器。
以下是 my.cnf 中的 mysql 设置:
[mysqld]
innodb_file_per_table=1
open_files_limit=1024000
max_connections=75
key_buffer=32M
max_allowed_packet=268435456
thread_stack=128K
table_cache=32
innodb_buffer_pool_size=800M
default-storage-engine=MyISAM
query_cache_size=8M
tmp_table_size=16M
max_heap_table_size=16M
thread_cache_size=4
table_open_cache=32
以下是 httpd.ini 中的 apache 设置:
Starts Servers 2
Minimum Spare Servers 6
Maximum Spare Servers 12
Server Limit 256
Max Clients 50
Max Requests Per Child 3000
Keep-Alive Off
我可以在这里做些改变来防止这种情况发生吗?服务器不应该因为一个人在购物车中添加产品而宕机,不是吗?
答案1
您可以按照以下步骤修复一个问题(wp-cron.php):
在 wp-config.php 文件中数据库详细信息之后(define('DB_COLLATE', ") 行之后)添加以下行:
定义('DISABLE_WP_CRON','true');
wp-cron.php 是 WordPress 虚拟 cron,每当您的博客文章或博客被访问时,都会调用此文件。如果您在 WordPress 中使用 cron,则应使用其他插件或从控制面板设置 cronjob。