基本服务器优化 - 1 个连接的慢速服务器

Basic server optimization – Slow server with 1 connection

我的服务器运行速度非常慢...除了我自己之外根本没有流量。我正在使用 Nginx 代理 Unicorn 服务器。我对服务器优化知之甚少。第一次加载时间总共13秒到第二次加载时间10秒。

网络:

http://i.imgur.com/AVaFlUF.png

http://i.imgur.com/qFVOUWr.png

http://i.imgur.com/OS4mYVM.png

让我缩短 10 秒的最快方法是什么?

注意: 资产尚未预编译。

编辑: 如果我将 Nginx 从进程中删除并直接服务于 Unicorn,我将减少到 1.72 秒。看起来 Nginx 是罪魁祸首。我仍然不知道为什么 Nginx 会拖慢我的速度。

你需要找出瓶颈在哪里。仅凭网络图很难猜测,但您应该检查系统中的以下级别:

  • OS 级别 - 如果它有足够的资源:处理器使用率、负载平均值、内存(是否系统交换?)
  • 数据库级别 - 瓶颈很可能出现在这里,因为您只有 1 个会话有问题;跟踪和检查数据库运行的查询并对其进行调整(索引、统计信息,取决于数据库服务器);在应用服务器 运行
  • 时检查数据库锁
  • 应用程序服务器级别 - 好吧,这取决于应用程序本身,但最好查看它的代码 运行;也许它在等待什么,比如来自外部系统的响应?

好吧...

瓶颈确实是由于 Nginx 或者更确切地说是 Nginx 和 Unicorn 之间的相互作用。直到我让 Unicorn 和 Nginx 在各自的配置文件中就一个套接字达成一致后,它才得到解决。

独角兽需要这个:

listen ENV["UNICORN_PORT"].to_i || 4567, :tcp_nopush => true
listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64

nginx 需要一个指向套接字的上游配置。

upstream unicorn_server {
    server unix:/home/user/someapp/tmp/sockets/unicorn.sock
    fail_timeout=0;
}

服务器首次响应时间现在缩短到 1-2 秒。