max user processes 导致的服务器大量close_wait问题解决过程
1、背景:
由于现网业务量增长过快,需要扩容应用程序服务器,分担来自前端的访问压力。
2、故障:
部署好业务启动程序后,发现程序运行一小会后不产生新的日志和数据。
3、查问题过程:
1、首先查看程序运行有无报错
正常
2、查看服务器的负载,会不会是新增服务器的性能影响了程序正常运行
查看io,正常

top查看,正常

内存使用,正常

3、查看应用服务器和前端nginx 的连接
大量的CLOSE-WAIT

连接状态一看就有问题,CLOSE_WAIT是服务端被动关闭连接的意思(连接状态详解)。
4、解决过程:
网上查解决方法一致都是说程序本身的问题导致,如果你的问题是程序造成的,那么按网上的方法改善代码即可解决。

但是我的新增服务器上的程序都是和原先运行正常的服务器上copy过来的,原服务器运行正常,所以说明不是程序的问题。
从新增服务器本身考虑“被动关闭连接”,会不会是我服务器内核参数配置的连接数太低了。
网上搜的修改连接数的帖子:https://www.jianshu.com/p/fa35d91b727b
经过一番修改,重新启动程序观察,问题依旧,实在是找不到和原有服务器配置上的区别了。
本着所有的问题都是有原因的原则,继续观察端口状态的变化:

观察到一个现象,es状态暴增后突然变为close_wait,应该就是服务器配置限制了连接数,还是要从服务端查看。
经过我的不断努力查找,终于找到问题的原因
root用户和普通用户的ulimit -a查看到的配置是不同的
查看我程序运行账号tomcat 的ulimit(ulimit -a 用来显示当前的各种用户进程限制。)
ulimit -a 时发现max user processes为1024,代表tomcat用户的线程数才1024

修改ulimit -u 65535 //此方法是临时修改

修改永久生效
上面的修改为临时修改,设置永久生效的方式是编辑/etc/security/limits.conf
* soft nproc
* hard nproc
* soft nofile
* hard nofile
注:sentos6系统中修改/etc/security/limits.conf ,退出shell后重新登陆,依然不行。
报:ulimit: max user processes: cannot modify limit: 不允许的操作 ulimit: open files: cannot modify limit: 不允许的操作
后经Google是/etc/security/limits.d/90-nproc.conf的限制。
解决办法:https://blog.csdn.net/u014595668/article/details/89279756
修改:
# vim /etc/security/limits.d/-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz # for reasoning. * soft nproc unlimited
root soft nproc unlimited
到这里问题终于解决。
max user processes 导致的服务器大量close_wait问题解决过程的更多相关文章
- MySQL数据库连接池导致页面登录无法查询问题解决过程
环境为tomcat+mysql 页面卡在登录界面或者登录后点击查询卡死,tomcat日志 连接池不可达 原因连接池不可用 解决办法 停止tomcat然后等待主机所有连接mysql的链接完全关闭再启动t ...
- Linux - 修改系统的max open files、max user processes (附ulimit的使用方法)
目录 1 问题说明 2 修改max open files 3 修改max user processes 4 附录: ulimit命令说明 1 问题说明 Linux 系统默认的max open file ...
- Linux - 修改系统的max open files、max user processes(附ulimit的使用方法)【转载】
Linux - 修改系统的max open files.max user processes(附ulimit的使用方法)目录 1 问题说明2 修改max open files3 修改max user ...
- Centos6 修改max user processes limits
ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何 ...
- dfs.datanode.max.xcievers参数导致hbase集群报错
2013/08/09 转发自http://bkeep.blog.163.com/blog/static/123414290201272644422987/ [案例]dfs.datanode.max.x ...
- 关于 CentOS 7 里面 普通用户 Ulimit max user processes 值的问题
最近在对tomcat 的一个 项目进行 压测, 普通用户 启动 tomcat 的时候 压力上去以后就会报 java.lang.OutOfMemoryError 的错误, 这种错误 按道理来说都是 系统 ...
- 闰秒导致MySQL服务器的CPU sys过高
今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...
- -bash: ulimit: max user processes: cannot modify limit: Operation not permitted
安装oracle时候在创建oracle用户后,切换oracle用户时,报如下错 [root@localhost ~]# su - oracle-bash: ulimit: max user proce ...
- 关于linux修改max user processes limits的问题
我们都知道,ulimit -u 可以设置max user processes limits,但是往往在设置的过程中,这样直接修改,不仅只能临时生效,重启之后又无效了,而且老是会失败. 而一般来说,修改 ...
随机推荐
- Docker CMD exec-form用于多个命令执行
这是一个通过shell形式的CMD指令运行多个命令的愚蠢示例.我更喜欢使用exec-form,但我不知道如何连接指令. 壳的形式: CMD mkdir -p ~/my/new/directory/ \ ...
- HTML5 Canvas小游戏基础:用户交互
交互是游戏的根本.缺少了用户交互,游戏就不能称之为游戏,只能说是动画或电影.事件是浏览器响应用户交互操作的一种机制. 1.事件和事件执行 事件定义了用户与页面交互时产生的各种操作(主要通过鼠标或热键的 ...
- PHP curl_unescape函数
(PHP 5 >= 5.5.0) curl_unescape — 解码经过URL编码的字符串. 说明 string curl_unescape ( resource $ch , string $ ...
- 把项目从码云上clone到IntelliJ IDEA
前期工作:安装并已配置好git,并且IDEA已经配置好git了 操作如下: 1) 在IDEA启动页面选择Get from Version Control 2) 打开码云上想要clon ...
- Java和C语言谁是编程语言的老大?
最近,TIOBE 公布了 2020 年 7 月的编程语言排行榜. 本次排行榜的最大亮点就是:C语言击败Java,稳坐老大宝座! 这两年,编程语言排行榜榜首位置,不是C语言,就是Java. 以下为具体榜 ...
- Linux的VMWare14中配置Centos7桥接网络环境(网络一)
1.查看当前初始环境如下:在windows端先查看本机ip ifconfig
- Jvm相关文章
深入理解JVM-内存模型(jmm)和GC https://www.jianshu.com/p/76959115d486
- 通过源代码分析Mybatis的功能
SQL解析 Mybatis在初始化的时候,会读取xml中的SQL,解析后会生成SqlSource对象,SqlSource对象分为两种. DynamicSqlSource,动态SQL,获取SQL(get ...
- day2. 六大基本数据类型简介
一.基本数据类型 Number 数字类型 (int float bool complex) str 字符串类型 list 列表类型 tuple 元组类型 set 集合类型 dict 字典类型 二.Nu ...
- rabbitMQ结合spring-boot使用(1)
从这一节开始我们进入rabbitMQ的实战环节,项目环境是spring-boot 加maven.首先让我们创建一个spring-boot项目,然后引入web依赖和 rabbitMQ的依赖 <de ...