Nginx 提供静态文件的方式太慢

han*_*ims 6 nginx

我在 Stack Overflow 上问过这个问题,但也许这更像是 SF 工作人员的问题。

于是就出现了许多像文章这样一个最近,结合光前端Web服务器使用时颂扬Django的静电发生器的美德。这对我来说很有意义。

但是,我没有得到其他人报告的结果——每秒数千个请求——我不知道为什么会这样。

我正准备重新设计我的报纸网站。我现在在测试服务器上使用静态生成器。当我在特定的静态页面上运行 Apache Bench 时,我得到了非常悲惨的结果:

ab -c 10 -n 1000 http://journal.streamlister.com/news/

Concurrency Level:      10
Time taken for tests:   53.011 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      21281212 bytes
HTML transferred:       21067360 bytes
Requests per second:    18.86 [#/sec] (mean)
Time per request:       530.107 [ms] (mean)
Time per request:       53.011 [ms] (mean, across all concurrent requests)
Transfer rate:          392.04 [Kbytes/sec] received
Run Code Online (Sandbox Code Playgroud)

top在围攻期间在服务器上观察,我可以看到它根本没有攻击 Apache 或数据库服务器。所以它实际上是为缓存的页面提供服务。Nginx 正在运行,但它的内存使用率从未超过 2%。CPU 保持大约 95% 的空闲状态。

我究竟做错了什么?我可能以某种方式错误配置了 nginx 吗?我的主要配置文件粘贴在下面;特定于该站点的包含几乎是静态生成器主页上示例配置的副本。我在 Slicehost 256k 切片上运行 Ubuntu 9.10。

user not_my_real_username;
worker_processes  4;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  8192;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    access_log  /var/log/nginx/access.log;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  0;
    #keepalive_timeout  65;
    tcp_nodelay        on;
    gzip  on;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
Run Code Online (Sandbox Code Playgroud)

gek*_*kkz 1

您的 nginx 实际上正在以合理的速率提供文件。在一台外部机器上,我每秒能够通过ab该页面上的一个 CSS 文件获得 371 个请求。

您正在测试整个页面,这意味着您正在对其发出 22 个请求。我在休息时每秒可以收到大约 40 个请求http://journal.streamlister.com/news/

它可能会更快,但您在 VPS 上与其他人共享 CPU 和磁盘 I/O。