一,nginx启动时提示打开文件数,ulimit的配置不起作用:

1,

2020/04/26 14:27:46 [notice] 1553#1553: getrlimit(RLIMIT_NOFILE): 1024:4096

用户可打开文件数

软限制是:1024

硬限制是: 4096

这个值太小,不适用于服务器用途

2,用root用户查看ulimit -n

[root@blog 1554]# ulimit -n
65535

检查limits.conf配置文件

[root@blog 1554]# cat /etc/security/limits.conf

limits.conf中有针对打开文件数的配置

* soft nofile 65535
* hard nofile 65535

可以看到不管ulimit命令还是配置文件,都做了打开文件数量的配置

3,确认当前进程是否有打开文件数量的限制?

用ps找到nginx的进程id:1554,查看master process进程的limits

[root@blog ~]# more /proc/1554/limits | grep 'open files'
Max open files 1024 4096 files

确实存在和ulimit中不一致的数量限制

为什么ulimit的配置不起作用?

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,ulimit配置不起作用的原因:

因为ulimit和limits.conf的配置只针对登录用户,

而对nginx这个systemd管理的服务不起作用,

服务的limit要在service文件中单独指定

三,配置nginx打开文件数量:

1,找到nginx的service文件

[root@blog 1554]# systemctl cat openresty.service
# /usr/lib/systemd/system/openresty.service
[Unit]
Description=The OpenResty Application Platform
After=syslog.target network.target remote-fs.target nss-lookup.target [Service]
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
ExecStart=/usr/local/openresty/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true [Install]
WantedBy=multi-user.target

2,编辑service文件,

[root@blog ~]# vi /usr/lib/systemd/system/openresty.service

在service段增加一行:

LimitNOFILE=65535

这样systemd就能了解到要对服务做的限制了

3,重启:

[root@blog ~]# systemctl daemon-reload
[root@blog ~]# systemctl stop openresty.service
[root@blog ~]# systemctl start openresty.service

4,查看日志看是否起作用:

[root@blog ~]# tail -100 /data/logs/nginxlogs/error.log
...
2020/04/26 14:36:22 [notice] 1651#1651: getrlimit(RLIMIT_NOFILE): 65535:65535
...

说明已经起作用

5,可以查看进程中限制信息看是否起作用:

找到进程id

[root@blog ~]# ps auxfww | grep nginx
root 1652 0.0 0.0 50412 3348 ? Ss 14:36 0:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nginx 1653 0.0 0.0 81896 5908 ? S 14:36 0:00 \_ nginx: worker process
nginx 1654 0.0 0.0 81896 5908 ? S 14:36 0:00 \_ nginx: worker process
nginx 1655 0.0 0.0 81896 5908 ? S 14:36 0:00 \_ nginx: worker process
nginx 1656 0.0 0.0 81896 5908 ? S 14:36 0:00 \_ nginx: worker process

我们查看pid 1652的打开文件限制:

[root@blog ~]# more /proc/1652/limits | grep 'open files'
Max open files 65535 65535 files

可以看到修改已经生效

四,查看nginx的版本

[root@blog ~]# /usr/local/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.15.8.2

五,查看centos的版本

[root@blog ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

centos8平台nginx服务配置打开文件限制max open files limits的更多相关文章

  1. Nginx 核心配置-检测文件是否存在

    Nginx 核心配置-检测文件是否存在 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件 ...

  2. Nginx如何配置静态文件直接访问

    其实前面在这篇文章Nginx之动静分离中已经提到过如何配置静态文件直接访问,今天突然再写是因为之前写的不够完善,所以这一篇文章你可以理解为是在前一个基础上的扩展. 之所以下午临时想到这个,是因为之前搭 ...

  3. nginx服务配置---php服务接入

    前言: 最近要搭建一个内部的wiki系统, 网上搜了一圈, 也从知乎上搜集了一些大神的评价和推荐. 重点找了几个开源的wiki系统, 不过发现他们都是采用php来实现的. 于是乎需要配置php环境, ...

  4. 【Linux】nginx服务配置

    一. 部署LNMP环境 准备工作 Linux系统准备 设置IP 关闭防火墙 yum源配置 安装: 传输软件包 1. tar -zxvf lnmp1.2-full.tar.gz cd lnmp1.2-f ...

  5. 自动分割nginx服务的日志文件

    nginx服务每天都会产生大量的日志信息,时间一长导致日志文件容量很大,会影响系统性能.通过以下shell代码,配合crontab定时执行可实现nginx日志定时分割的功能. #!/bin/bash ...

  6. 初识 Nginx服务配置

    Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.很多高知名度的网站 ...

  7. day09 samba、nginx服务配置

    samba 1.环境准备 [root@localhost ~]# iptables -F #清除防火墙配置 [root@localhost ~]# systemctl stop firewalld # ...

  8. 打杂程序员之nginx服务配置

    现在公司要在服务器上多加个网站用同一个nginx服务器,而且都是公用80端口. 因为服务器上跑着好几个网站了,所以配置文件配置完成时候要检测一下能不能用,用nginx -t:最好不要直接杀死nginx ...

  9. CentOS8平台nginx日志的定时切分

    一,编写bash脚本: [root@yjweb crontab]# vi split_nginx_logs.sh 代码: #!/bin/bash # 备份nginx的日志 # 昨天的日期 file_d ...

随机推荐

  1. RocketMQ的发送模式和消费模式

    前言 小伙伴们大家好啊,王子又来和大家一起闲谈MQ技术了. 通过之前文章的学习,我们已经对RocketMQ的基本架构有了初步的了解,那今天王子就和大家一起来点实际的,用代码和大家一起看看RocketM ...

  2. JVM内存溢出与内存泄漏

    内存溢出与内存泄漏 内存溢出相对于内存泄漏来说,尽管更容易被理解,但是同样的,内存溢出也是引发程序崩溃的罪魁祸首之一. 由于GC一直在发展,所有一般情况下,除非应用程序占用的内存增长速度非常快,造成垃 ...

  3. C语言知识汇编

    (20-) 1.局部变量:定义在大括号的变量是局部变量 作用域:从 定义变量到return或者遇到 } 结束为止 include <stdio.h> int main() { int nu ...

  4. 我还在生产玩 JDK7,JDK 15 却要来了!

    自从 JDK9 之后,每年 3 月与 9 月 JDK 都会发布一个新的版本,而2020 年 9 月即将引来 JDK15. 恰巧 IDEA 每四五个月会升级一个较大的版本,每次升级之后都会支持最新版本 ...

  5. Oracle学习(十)Oracle定时任务

    一.Oracle定时任务基础 简介 oracle job 是应用在数据库层面,用来定时执行存储过程或者 SQL 语句的定时器. 查询 --当前库中运行的 job SELECT t.* FROM dba ...

  6. Spring学习(三)--Spring的IOC

    1.BeanFactory和FactoryBean BeanFactory是一个接口类,定义了IOC容器最基本的形式,提供了IOC容器所应该遵守的基本服务契约. FactoryBean是一个能产生或者 ...

  7. djano jwt 的使用

    1.5 JWT:使用djangorestframework-jwt模块进行用户身份验证    安装: pip install djangorestframework-jwt    添加应用:pytho ...

  8. Centos-远程拷贝-scp

    scp 依赖ssh协议,实现从哟个linux系统拷贝到另一个linux系统 格式 scp -P port localPath user@IP:targetPath # 如果拷贝的是文件则需要传递 -r ...

  9. three.js学习5_渲染器

    THREE.WebGLRenderer WebGL Render 用WebGL渲染出你精心制作的场景 介绍 在之前的介绍中, 已经介绍过场景, 相机, 光源, 有了这些后, 就可以形成一个可观的三维展 ...

  10. 022 01 Android 零基础入门 01 Java基础语法 03 Java运算符 02 算术运算符

    022 01 Android 零基础入门 01 Java基础语法 03 Java运算符 02 算术运算符 本文知识点:Java中的算术运算符 算术运算符介绍 算术运算符代码示例 注意字符串连接问题和整 ...