Too many open files

Centos7.5   提示Too many open files

进行压力测试的时候提示Too many open files

[root@web01 code]# ab -n100000 -c200 http://127.0.0.1/tt.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
socket: Too many open files (24)

产生的原因:文件句柄(文件描述符)不够

解决方法:

  方式一:临时修改

  [root@nginx ~]# ulimit -n 2048

  方式二:永久修改

[root@nginx ~]# vim /etc/security/limits.conf #永久修改

#方式一   系统全局性修改

# *代表所有用户,soft仅提醒,hard限制,nofile打开最大文件数
* soft nofile 25535 #所有用户运行的进程打开最大的文件数为25535,达到这个限制后会提醒
* hard nofile 25535 #所有用户运行的进程打开最大的文件数为25535,达到这个限制后会限制打开

#方式二   用户局部性修改

#针对root用户,soft仅提醒,hard限制,nofile打开最大文件数
root soft nofile 65535 #root用户运行的进程打开最大的文件数为65535,达到这个限制后会提醒
root hard nofile 65535 #root用户运行的进程打开最大的文件数为65535,达到这个限制后会限制打开

#重启生效

#查看是否生效
[root@web01 ~]# ulimit -a
[root@web01 ~]# ulimit -n

#方式三  

针对Nginx进程
[root@web01 code]# vim /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
worker_rlimit_nofile 65535;
...
[root@web01 code]# nginx -t
[root@web01 code]# systemctl restart nginx

示例:

方式一:临时修改

[root@web01 ROOT]# ab -n100000 -c200 http://127.0.0.1/tt.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
socket: Too many open files (24)
[root@web01 ROOT]# ulimit -n 300  #临时修改
[root@web01 ROOT]# ab -n100000 -c200 http://127.0.0.1/tt.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests


Server Software:        nginx/1.14.2
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /tt.html
Document Length:        10 bytes

Concurrency Level:      200
Time taken for tests:   26.754 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      24600000 bytes
HTML transferred:       1000000 bytes
Requests per second:    3737.73 [#/sec] (mean)
Time per request:       53.508 [ms] (mean)
Time per request:       0.268 [ms] (mean, across all concurrent requests)
Transfer rate:          897.93 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    4  50.4      1    1008
Processing:    10   48  99.3     35    3049
Waiting:        5   46  99.4     34    3048
Total:         10   52 112.6     37    3050

Percentage of the requests served within a certain time (ms)
  50%     37
  66%     42
  75%     45
  80%     46
  90%     54
  95%     69
  98%    126
  99%   1030
 100%   3050 (longest request)

方式二:永久修改

[root@web01 ~]# ab -n100000 -c300 http://127.0.0.1/tt.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
socket: Too many open files (24)
[root@web01 ~]# vim /etc/security/limits.conf
* soft nofile 400                                                                                                                           
[root@web01 ~]# reboot
[root@web01 ~]# ab -n100000 -c300 http://127.0.0.1/tt.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests


Server Software:        nginx/1.14.2
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /tt.html
Document Length:        173 bytes

Concurrency Level:      300
Time taken for tests:   8.985 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Non-2xx responses:      100000
Total transferred:      32500000 bytes
HTML transferred:       17300000 bytes
Requests per second:    11129.77 [#/sec] (mean)
Time per request:       26.955 [ms] (mean)
Time per request:       0.090 [ms] (mean, across all concurrent requests)
Transfer rate:          3532.40 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   15 131.5      2    3012
Processing:     1   10  10.1      9     613
Waiting:        1    8  10.0      8     610
Total:          3   25 133.7     11    3026

Percentage of the requests served within a certain time (ms)
  50%     11
  66%     12
  75%     12
  80%     12
  90%     13
  95%     14
  98%     17
  99%   1019
 100%   3026 (longest request)
原文地址:https://www.cnblogs.com/lvhanzhi/p/10387523.html