我们有一个流行的 iPhone 应用程序,人们可以在其中像 Wordfeud 一样互相决斗。我们今天有近 100 万注册用户。
在高峰时段,该应用程序的响应时间非常长,而且还有很多超时。我们试图找到瓶颈,但很难做到。所有服务器上的 CPU、内存和 I/O 都低于 50%。该问题仅在高峰时段出现。
我们的设置
1 VPS with nginx (1.1.9) as load balancer
4 front servers with Ruby (1.9.3p194) on Rails (3.2.5) / Unicorn (4.3.1)
1 database server with PostgreSQL 9.1.5
数据库日志没有显示足够长的请求时间来解释 nginx 错误日志中显示的所有超时。
我们还尝试直接在前端服务器上构建和运行应用程序(在所有其他用户都在负载均衡器上运行的高峰时段)。令人惊讶的是,即使在高峰时段,绕过负载均衡器的应用程序也很快。
NGINX 设置
worker_processes=16
worker_connections=4096
multi_accept=on
Linux 设置
fs.file-max=13184484
net.ipv4.tcp_rmem="4096 87380 4194304"
net.ipv4.tcp_wmem="4096 16384 4194304"
net.ipv4.ip_local_port_range="32768 61000"
为什么应用程序绕过负载均衡器的速度如此之快?nginx 作为负载均衡器会成为瓶颈吗?有没有什么好方法可以比较 nginx 中的超时与独角兽中的超时,以查看问题出在哪里?