中等stream量会导致wordpress服务器需要重新启动

在发送邮件后,我们的rackspace wordpress服务器遇到中等stream量的问题,我们遇到了麻烦。

服务器规格是:

CPU 2 vCPUs RAM 2 GB System Disk 80 GB Network 240 Mb / s Disk I/O Good 

运行:

 Centos 7.0 WordPress 4.3.1 Httpd 2.4.6 PHP 5.4.11 MariaDB 5.5.41 

据我所知,安装是相当标准的,数据库非常标准,索引和相当小。 我们也是wordpress对象caching。

根据新的遗物; 在正常stream量期间,该站点花费PHP的大约80%的时间,15%的时间花费在web外部,并且在数据库中仅占很小的百分比。 平均标准页面的应用程序时间大约是800毫秒,这对我来说似乎很慢。

在1分钟内运行250个连接的负载testing会导致连接逐渐变长,然后在大约30分钟后开始超时,并且服务器无法响应(即使stream量停止响应)。 它需要重新启动才能重新启动。

我无法使用putty连接,并且主页在超时和返回可怕的“build立数据库连接错误”之间振荡。

在最近的testing中使用机架空间监控代理,看起来CPU在死亡之前达到了100%,内存使用率达到了1.6GB左右,并且下降到了100MB左右。 它看起来像大约2GB的交换内存(总共4GB)也被使用。 标准的使用率似乎是15%的CPU,800MB的内存和400MB的交换。

我们的Apacheconfiguration没有设置以下任何一项( /etc没有文件); 超时,KeepAlive,MaxKeepAliveRequests,KeepAliveTimeout; 所以我猜测它正在使用默认值。

我已经看了mariadb设置:

 innodb_buffer_pool_size = 1400M max_user_connections = 0 

这似乎不是原因。

我也打开了performance_schema,但我真的不知道我在找什么。 我甚至不确定数据库是什么问题。

我很想升级实例,但是我宁愿更清楚地了解瓶颈在哪里以及导致服务器死机的原因,而不是放慢速度。

任何想法从哪里开始? 似乎有很多可能的调整和大量的信息。

在任何事件中密切监测是至关重要的。 正如我们看到的,真相出来了:

在最近的testing中使用机架空间监控代理,看起来CPU在死亡之前达到了100%,内存使用率达到了1.6GB左右,并且下降到了100MB左右。 它看起来像大约2GB的交换内存(总共4GB)也被使用。 标准的使用率似乎是15%的CPU,800MB的内存和400MB的交换。

众所周知PHP是CPU密集型的。 你已经使用了所有可用的CPU和几乎所有可用的RAM。

你应该先采取措施来处理,比如操作码caching(例如Zend OPcache)和文件caching(例如W3 Total Cache WordPress插件)。 如果这些帮助不够 ,那么是时候升级实例了。

你可能只是一次运行了太多的进程,内存不足,并且交换。 可能是别的东西locking了,但先处理这个,然后看看你在哪里。

你还没有告诉我们你是使用mod_php还是类似于php-fpm。 后者好处理负载更好,但在任何情况下,请确保您不会运行更多的PHP进程比你有记忆。 运行超过5或10个进程可能不会获得任何性能优势,但默认运行mod_php尤其会比内存运行多得多。 此外,每30个左右的请求回收进程。 如果你给1GB的数据库和操作系统,那么你的其他GB可能不会处理10个WordPress进程。 看看他们有多less记忆,然后做一下清理工作。 在正常情况下,你不应该使用任何交换。

看看你的保持活着的设置。 对于Apache来说,最好将其closures,或将其设置为1秒。 Nginx处理保持更好。 事实上,这是nginx使用像WordPress这样的php应用程序可能会更好的performance的唯一真正重要的原因(尽pipe它的代价是不那么愉快的configuration)。 这很可能不是你的testing的一个因素,但是对于真正的浏览器是很重要的。

100%的CPU让我感到惊讶。 使用top来查看正在使用的内容。 请记住,100%通常意味着100%的一个核心。 您可能只是看到一个cron工作踢,其中与WordPress通常不是“cron”,而是作为一个额外的运行时处理Web请求运行。 缺less操作码caching也可能导致CPU使用率过高。