优化Nginx

时间:2013-12-29 20:25:44

标签: php mysql apache nginx

我正在使用Nginx作为RPS并且存在服务器无法处理超过~100个请求/ s的问题。如果单个IP发送了那么多请求,Nginx将为每个人提供502错误。

这就是我所拥有的。

具有此规格的专用机器

100 mbps(两个方向)。 双核CPU 5 GB内存 Windows Server 2008 R2

Apache,PHP(作为模块)& MySQL在后面的handeling动态内容。 Nginx在前面并将请求传递给Apache。

服务器上的每个页面都是动态生成和优化的,没有MySQL加载等...每页的大小都在50KB以下。

响应时间/加载时间低于0.6秒。

所以一切都很快,直到有人打开任何软件并向服务器发送请求,当请求率大约为100req / s时,它开始发送502错误。请求永远不会到达Apache。所以这不是Apache问题。

该服务器不会处理更多吗?

这是Nginx CONF的样子,

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  K:/logs/nginx/access.log  main;

    sendfile        off;
    server_tokens off;
    keepalive_timeout  65;
    server_names_hash_bucket_size 64;
    client_max_body_size 50m;


server {
    listen       80;
    server_name  www.domain.com;
    proxy_pass_header Server;
    root   K:/website/domain.com/;
    index  index.html index.htm index.php;

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
           expires 365d;
        }

    ## send request back to Apache ##
    location / {
     proxy_pass  http://127.0.0.1:8080;
     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
     proxy_redirect off;
     proxy_buffering off;
     proxy_set_header        Host            $host;
     proxy_set_header        X-Real-IP       $remote_addr;
     proxy_set_header REMOTE_ADDR $remote_addr;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

}

感谢任何帮助和建议。

3 个答案:

答案 0 :(得分:1)

  

请求永远不会到达Apache。所以它不是Apache问题。

是的,这是一个Apache问题 - 很可能你已经在Apache上达到了maxclients,而且它拒绝了更多的连接。

答案 1 :(得分:1)

当上游服务器(网关)无法处理请求(及时)时,将返回502状态,因此很可能是Apache问题。

正如其他人所建议的那样,您应该仔细查看Apache本身的配置,特别是MaxRequestWorkers(2.4)或MaxClients(2.2)设置。

  

Nginx也为批量请求提供状态499。

这意味着客户端(浏览器)在发送响应之前关闭了连接;最有可能的是,这是由上游缓慢引起的,再次指向Apache。

答案 2 :(得分:0)

Windows上的Nginx尚未正式推荐用于制作:http://nginx.org/en/docs/windows.html;如果你的主机必须是Windows,那么你可以通过在VM中运行nginx来获得更好的结果。