扩大Apache服务器

我有一个运行apache2的Ubuntu服务器,我希望能在有限的时间内被大约500-1000(同时)的用户所击中。 服务器提供了一个混合的定制(相当轻)的PHP页面连接到一个postgresql数据库(大约20 Mb)和静态内容。 硬件是稳定和相当健壮的:

  • Intel Xeon E5420 @ 2.5 GHz
  • 12 GB RAM

在此前的服务器上,我增加了ServerLimit,MPM模块的MaxClients,减less了Timeout和KeepAliveTimeout。 它已经工作,但一直呆滞,我有一种感觉,可以做更多的事情。 你会如何build议configurationApache服务器来处理这种负载?

在这种情况下,您的瓶颈将是PHP以及它在数据库中所做的事情。 如果你打开每个通话的新连接,那么你很可能会打击磁盘访问上的I / O墙。 最好的办法是将数据库和静态内容放在RAM磁盘中,并根据需要提交到磁盘上的数据库。 还要在PHP中使用RAM专用的快速哈希查找来维护高效的查询caching机制,这样就不会给与查询caching查找相关的不必要的处理周期的postgresql带来负担。 尽pipepostgresql在查询caching方面可能比您自己的代码更高效,但并不像从不需要首先连接那么快。

您的服务器应该能够轻松处理事情。 只是几个注意事项:

  1. 使用SSL将增加您的计算要求。 所以,使用普通的HTTP。
  2. 使用prefork MPM将增加您的内存需求。 所以,使用工人MPM。
  3. 对更多内核使用更多的并发将会提高性能。
  4. 为您的PostgreSQL数据库提供更多的RAM。

这些只是通用的指导方针。