Nginx最大处理连接数

        记录一次最近公司SEO优化压测,以前所有页面上的数据都是通过JS获取的,这样会有一个问题,就是SEO不友好,所以就增加了一层Node,接口请求放在了Node里,通过Node渲染页面后返回给浏览器。因为是一次比较大的改版,所以在测试环境进行了一次性能压测,当然测试环境机器有限,是按比例缩小进行压力测试。中间出现了几个问题,印象最深刻的就是Nginx最大连接数了。最开始因为对Nginx高性能的信任,所以没往这方面想。

        通过查看Node请求日志发现一些接口报50x错误,但Java日志并没有相关错误日志,偶然发现Nginx上有记录异常信息,报了很多的 open too many files 错误,Socket在Linux中也是一个文件,也受Linux的最大打开文件数限制。通过 ulimit -n 查看到测试环境上配置是默认的1024,这自然是远远不够的。

        通过修改 /etc/security/limits.conf 增加到65535,重新登录后虽然 ulimit -n 显示的是变了,但还是继续报这个错,后来才知道该配置需重启服务器才生效,重启服务器太麻烦,无奈只好把修改Nginx运行用户修改为root,root用户不受此限制(当然生产环境上是不敢如此修改的)。修改完了之后就正常,但继续往上压测还是会出现该错误,后来通过修改Nginx配置 worker_rlimit_nofile 及 worker_connections 才得以正常。Nginx配置文件 nginx.conf 修改完reload下即可生效:nginx -s reload。

        相关配置如下所示:

user  root;
worker_processes  2;
worker_rlimit_nofile 15360;

events {
    use  epoll;
    worker_connections  10240;
}

你可能感兴趣的:(web)