如何增加 apache2 中的同时连接数?我正在使用一个定期轮询服务器的 javascript 应用程序,并试图防止客户端被锁定。我知道我应该切换到非锁定的 Web 服务器,但在此之前,我可以在 apache 中执行任何类型的 hack 来优化这一点吗?谢谢。
答案1
在此网站上搜索“最大客户数' 它应该会提供大量信息来帮助你入门。
根据您的服务器资源,您可能需要查看一些指令,这些指令可能会影响同时连接的数量,从而影响 Web 服务器的性能。以下是一些示例(根据您的环境,某些指令可能需要或不需要配置):
- 启动服务器
- 最大备用服务器数
- 最小备用服务器
- 最大客户数
- 服务器限制
- 每个子进程的最大请求数
- 活着
- KeepAlive 超时
- 最大KeepAliveRequests:
答案2
在 Apache 级别,您需要最大化该MaxClients
值,而不会耗尽 RAM。例如,您可以将 MaxClients 设置为 1000,这样它就可以正常运行,直到您拥有太多并发连接,导致 RAM 耗尽并开始使用交换,此时您的服务器性能将急剧下降。
作为粗略的指导,您可以运行top
并查看所有条目,计算和列httpd
之间的差值。此值是 Apache 客户端进程使用的近似内存。将您希望 Apache 使用的内存总数除以该数字,即可得到初始 MaxClients。例如,对于平均大小为 20MB 的 Apache 进程,使用 3GB 可计算出 3000/20 = 150 MaxClients。RES
SHR
如果您想进一步增加 MaxClients,您可以尝试通过不加载任何不需要的模块来减少 Apache 进程的大小。
正如您所提到的,您可能希望考虑使用替代 Web 服务器,或者可能是双 Apache Web 服务器,以增加可能的并发连接数。当 Apache 配置为服务动态页面(PHP 等)时,它会占用相对较大的内存,这会对在内存耗尽之前可以拥有的连接数设置相对较低的限制。在这种情况下,通常的选择是使用更轻量的 Web 服务器(Lighttpd、Nginx 等)来提供所有静态内容,而让 Apache 仅提供动态页面。