今天下午,测试组同事模拟800个用户同时发起请求,nginx开始报错,
"Too Many Open Files"
 我们使用的是Dell R430服务器,2个物理CPU,每个CPU包含6个内核;
解决方法:
1. 修改系统最大连接数配置:
echo "fs.file-max = 70000" >> /etc/sysctl.conf  &&  echo "nginx soft nofile 10000" >>  /etc/security/limits.conf && echo "nginx hard nofile 30000" >> /etc/security/limits.conf && sysctl -p && sed -i '3a\worker_rlimit_nofile 30000;' /etc/nginx/nginx.conf
 
2. 修改nginx配置文件/etc/nginx/nginx.conf
 

user nginx;
worker_processes 6;
worker_rlimit_nofile 30000;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
  worker_connections 10240;
}

http {
  include /etc/nginx/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 /var/log/nginx/access.log main;

          sendfile on;
          #tcp_nopush on;
          keepalive_timeout 65;
          #gzip on;
          upstream epgservers{
                server 192.168.89.211:81 max_fails=3 fail_timeout=5s;
                server 192.168.89.212:81 max_fails=3 fail_timeout=5s;
                server 192.168.89.213:81 max_fails=3 fail_timeout=5s;
          }

          include /etc/nginx/conf.d/*.conf;

}

/etc/nginx/conf.d/default.conf

server {
  listen 80;
  server_name localhost;

  #charset koi8-r;

  #access_log logs/host.access.log main;

  location / {
    client_max_body_size 300m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 300;
    proxy_read_timeout 300;
    proxy_send_timeout 300;
    proxy_buffer_size 64k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;

    proxy_pass http://epgservers;
  }
}

/etc/nginx/conf.d/http.conf

server {
  listen 81;
  server_name localhost;

  #charset koi8-r;

  #access_log logs/host.access.log main;

  location / {
    root /var/www/html;
    index index.html index.htm index.php;
  }

  #error_page 404 /404.html;

  # redirect server error pages to the static page /50x.html
  #
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root html;
  }

  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  # proxy_pass http://127.0.0.1;
  #}

  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #

  location ^~ /image/ {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    if ($request_uri ~ /image/(\d+).(\d+).(\d+).(\d+)/(\d+)/(.+))
    {
      set $ip $1.$2.$3.$4;
      set $port $5;
      set $path $6;
    }
    proxy_pass http://$ip:$port/$path;
  }

  location ~ \.php$ {

    root /var/www/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_connect_timeout 150;
    fastcgi_read_timeout 150;
    fastcgi_send_timeout 150;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 32k;
    fastcgi_busy_buffers_size 64k;
    fastcgi_temp_file_write_size 64k;
    include fastcgi_params;
    client_max_body_size 10240m;
    client_body_buffer_size 10m;

  }
  

      location /vod{

    alias /usr/local/content  ;

  }


  
#image server rewrite
  rewrite /imgfs/weed/(.*) /app/Imgfs.php?fid=$1 last;
  rewrite ^/sunboss/(\d+)/(.+)  /sunboss/$2?hostid=$1 last;

  
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  # deny all;
  #}
  }

3. 重启nginx
service nginx restart
 
4. 检查确认:
 
ps -ef|grep nginx
root      58651      1  0 18:23 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     58652  58651  0 18:23 ?        00:00:06 nginx: worker process
nginx     58653  58651  0 18:23 ?        00:00:03 nginx: worker process
nginx     58654  58651  0 18:23 ?        00:00:05 nginx: worker process
nginx     58655  58651  0 18:23 ?        00:00:05 nginx: worker process
root      68259  34657  0 18:26 pts/0    00:00:00 tailf /var/log/nginx/error.log
root      83634  82399  0 18:27 pts/2    00:00:02 tailf /var/log/nginx/access.log
root     146535  55465  0 18:54 pts/1    00:00:00 grep --color=auto nginx
 
 
cat /proc/58655/limits 
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             127387               127387               processes 
Max open files            30000                30000                files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       127387               127387               signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us    
 
 
第二台应用节点绑定epgservice虚拟IP, 三台应用节点都要修改;

nginx高并发下配置参数的更多相关文章

  1. Nginx高并发简单配置

    https://www.cnblogs.com/sunjianguo/p/8298283.html 停用除SSH外的所有服务,仅保留nginx,优化思路主要包括两个层面:系统层面+nginx层面. 1 ...

  2. Keepalived+Nginx高可用架构配置

    1.yum install -y libnfnetlink-devel2.yum -y install libnl libnl-devel 3.yum -y install openssl-devel ...

  3. 针对Properties中实时性要求不高的配置参数,用Java缓存起来

    Properties常用于项目中参数的配置,当项目中某段程序需要获取动态参数时,就从Properties中读取该参数,使程序是可配置的.灵活的. 有些配置参数要求立即生效,有些则未必: 一.实时性要求 ...

  4. [效果不错] nginx 高并发参数配置及linux内核参数优化,完整的内核优化设置。PHP-FPM高负载解决办法。

    背景:对vps小资源的实践中对,https://justwinit.cn/post/7536/ 的再优化,再实践,再优化,特别是Nginx,PHP,内核: 零)Nginx: error_log /da ...

  5. 高并发下的 Nginx 优化与负载均衡

    高并发下的 Nginx 优化   英文原文:Optimizing Nginx for High Traffic Loads 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. ...

  6. 高并发下的Nginx优化

    高并发下的Nginx优化 2014-08-08 13:30 mood Nginx    过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apach ...

  7. Nginx配置upstream实现负载均衡及keepalived实现nginx高可用

    (原文链接:http://www.studyshare.cn/blog-front//blog/details/1159/0 ) 一.准备工作 1.准备两个项目,发布到不同的服务器上,此处使用2个虚拟 ...

  8. nginx 配置参数优化

    nginx作为高性能web服务器,即使不特意调整配置参数也可以处理大量的并发请求.以下的配置参数是借鉴网上的一些调优参数,仅作为参考,不见得适于你的线上业务. worker进程 worker_proc ...

  9. tengine编译安装及nginx高并发内核参数优化

    Tengine Tengine介绍 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性. Tengine的性能和稳定性已经在大型的 ...

随机推荐

  1. E - Let's Go Rolling!

    题目描述:数轴上有nn个质点,第ii个质点的坐标为xixi,花费为cici,现在要选择其中一些点固定,代价为这些点的花费,固定的点不动,不固定的点会向左移动直至遇到固定的点,代价是这两点的距离,如果左 ...

  2. 用SQL命令手工创建CDB

    1.设置环境变量  $ export ORACLE_SID=ora12c  $ export ORACLE_HOME=/home/oracle/product/12.1.0/db1  $ export ...

  3. Eclipse Mars-Ant无法使用jre1.6的问题

    https://www.jianshu.com/p/24b9517d7f43 Eclipse 升级到Mars 4.5.1版本后,老项目使用jdk1.6,通过ant编译jar时,会遇到如下问题: 使用j ...

  4. oracle和sql server中,取前10条数据语法的区别

    在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...

  5. Zabbix3.4.7监控windows进程

    1.首先,找到要监控进程的主机 创建新的监控项 然后应用集选择processes,点击添加,此处是以zabbix_agentd.exe为例添加 2. 为此监控项添加触发器 注意触发器表达式的编写,上面 ...

  6. SQLite 剖析

    由于sqlite对多进程操作支持效果不太理想,在项目中,为了避免频繁读写 文件数据库带来的性能损耗,我们可以采用操作sqlite内存数据库,并将内存数据库定时同步到文件数据库中的方法. 实现思路如下: ...

  7. laravel中的登录页面逻辑

    <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades ...

  8. laravel中对模型和路由做缓存,提高性能

    模型缓存命令: php think optimize:schema 路由缓存命令: php think optimize:route

  9. liunx文件操作 文件查看

    文件的阅读命令 head 命令 head命令可以用来查看文件的开头部分,命令的格式是: head 文件名 默认设置,它只查看文件的前10行.但可以通过指定一个数字选项来改变要显示的行数,命令如下 he ...

  10. .NET接入UnionPay银联支付(一)手机wap支付

    最近呢,比较忙,公司在接入银联全渠道支付,博主接手的wap支付,发表一下博主在接入的时候遇到的坑和注意事项,方便大家学习接入,爬坑的路上更顺利一点~ 开发步骤 1. 以表单的方式组装要发送给银联全渠道 ...