如何防止 Wordpress 中的 Admin-Ajax.php 导致服务器崩溃?

如何防止 Wordpress 中的 Admin-Ajax.php 导致服务器崩溃?

因此,我的 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。

相关内容