我正在运行一个服务于移动应用程序的API请求的Apache2 Ubuntu服务器。
最近我面临的一个瓶颈是,当请求越来越高(更多的并发用户),请求响应越来越慢。 以前需要1秒或2秒,但是一旦并发用户增加(在某个高峰时间),即使服务器负载, CPU和内存仍然很低,也可能会延迟10秒或更长时间。
我的目标是提高Apache2和Ubuntu Server在最低响应时间尽可能多的并发用户的能力。 内存和CPU不是主要的考虑因素,因为VPS规格如果达到极限,可以扩大规模。 我怎样才能做到这一点?
我到目前为止所做的:
configurationulimit /etc/security/limits.conf并添加以下内容:
将以下行添加到/etc/pam.d/common-session
会话需要pam_limits.so
configurationApache2 /etc/apache2/mods-enabled/mpm_prefork.conf
<IfModule mpm_prefork_module>
StartServers 20
MinSpareServers 25
MaxSpareServers 100
MaxRequestWorkers 150
MaxConnectionsPerChild 0
MaxClients 8192
MaxRequestsPerChild 0
ServerLimit 8192
</ IfModule>configuration
将以下行添加到/etc/sysctl.conf
fs.file-max = 2097152
响应时间似乎有所改善(虽然有些请求仍然延迟),但不令人满意,因为它仍然比非高峰时间慢得多。
停止使用prefork模块并开始在apache中使用事件mpm。 Prefork是旧的方法,并向前移动你想安装事件MPM。
这可能不是你的Web服务器,而是链中的其他东西。
Netstat -i 5查看networking接口是否有任何错误。 KeepAlive已打开。 特别是如果你像阿贾克斯重的网站,你会提高性能。 我不相信切换MPM会帮助你。 你的情况不是资源限制。 其他的东西。