eAccelerator,服务器失速问题

我只是最近安装了eaccelerator和切换PHP的一切正常服务器上的服务器负载大约1-2(4 cpu)和一段时间后,服务器负载过重(服务器负载增加到250),服务器停止。 在suphp模式服务器被stream量超载,所以我决定把它切换到eaccelerator,现在我迷路了…有人可以解释吗?

停止使用suPHP。 它为每个PHP请求生成一个单独的进程,使得eAccelerator无用(因为每次请求都会抛弃caching)。

从你的描述中,tat听起来像一个非线程的apache(dso-)php。 你有负载尖刺,对吧? 我以前有过

你的apache启动了一些服务器进程。 如果有更多的传入连接比您的进程可以处理,则会产生更多的服务器进程。

由于负荷已经很高,产卵需要一些时间。 如果在新产生的服务器进程运行之前产卵需要很长时间,并且有更多的传入请求,则会产生额外的进程,进一步减慢计算机的运行速度。 这是一个加速器没有多大帮助的情况。

所以,你可以做什么? 那么,你可以设置StartServersMinSpareServersMaxSpareServers在你的Apacheconfiguration方式比现在更高。 你应该确定你的系统上一个单独的apache进程的平均大小(因为你使用的是mod_php,他们应该从大致相同的大小开始,之后他们开始增长,因为php从来没有释放任何分配的内存),并确定有多less进程可以适应你想在apache上花费的内存量。 您需要预先启动足够的服务器进程才能在整个负载峰值期间保持活跃状态​​,而不会产生太多的产卵。 还要记住保持MaxRequestsPerChild在合理的水平,以释放由php分配的内存不时。

长期的解决scheme是在apache上切换到线程(worker-)MPM,这在RAM上更容易,因为apache线程共享内存(并且在系统上启动新线程比产生新进程更容易),并使用fcgi与PHP。 eaccelerator是好的,我会保持在设置。

那么也许你问了太多你的服务器,即使启用了eAccelerator。 当您点击250次平均值时,有多less个apache进程处于活动状态? 这听起来像是不pipe你的phpconfiguration如何,你都需要调整你的apache设置,这样你的服务器硬件就不能处理更多的实例。