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

时间:2015-01-09 16:16:44

标签: ruby nginx sinatra server unicorn

我的服务器运行得非常慢......除了我自己以外没有任何流量。我用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会让我放慢脚步。

2 个答案:

答案 0 :(得分:1)

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

  • 操作系统级别 - 如果它有足够的资源:处理器使用率,加载平均值,内存(系统交换?)
  • 数据库级别 - 最有可能的瓶颈就在这里,因为您只有1个会话的问题;跟踪并检查数据库运行和调优的查询(索引,统计信息,取决于数据库服务器);在appserver运行时检查数据库锁
  • 应用程序服务器级别 - 嗯,它取决于应用程序本身,但最好检查它正在运行的代码;也许是在等待某些东西,比如外部系统的响应?

答案 1 :(得分:0)

好的......

瓶颈确实是由于Nginx或Nginx和Unicorn之间的相互作用。直到我让Unicorn和Nginx在各自的配置文件中同意一个套接字才解决它。

Unicorn需要这个:

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秒。