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,但是往往在设置的过程中,这样直接修改,不仅只能临时生效,重启之后又无效了,而且老是会失败. 而一般来说,修改 ...
随机推荐
- 常见的HTTP返回状态值
200 (成功) 服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 301 (永久移动) 请求的网页已永久移动到新位置. 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自 ...
- Glide:重新加载失败的问题
Glide在url不变,内容改变的时候重新加载还会显示第一张图片, 解决方法: https://blog.csdn.net/u013420865/article/details/53197788?de ...
- HttpServletRequest、HttpServletResponse
doGet()/doPost()方法都有两个参数,一个为代表请求的request,另一个代表响应response. request是获取前台传递的内容,response是反馈给前台数据 HttpSer ...
- Python爬虫开发与项目实战pdf电子书|网盘链接带提取码直接提取|
Python爬虫开发与项目实战从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算.大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应 ...
- switch的一些思考(seitch与ifelse的区别)
参考博客: https://www.cnblogs.com/balingybj/p/5751707.html Switch的思考 Switch与If--else的比较 switch...case与i ...
- luogu P4562 [JXOI2018]游戏 组合数学
LINK:游戏 当L==1的时候 容易想到 答案和1的位置有关. 枚举1的位置 那么剩下的方案为(R-1)! 那么总答案为 (R+1)*R/2(R-1)! 考虑L==2的时候 对于一个排列什么时候会终 ...
- Hadoop学习问题记录之基础篇
目的 记录学习hadoop过程中遇到的基础问题,无关大小.无关困扰时间长短. 问题一 全分布式环境中运行mapred程序,报异常:java.net.NoRouteToHostException: 没有 ...
- lamt环境搭建
目录 lamt环境搭建 安装apache 安装mysql 安装tomcat 修改配置文件 lamt环境搭建 环境说明: 系统 IP 需要安装的服务 centos7 192.168.32.125 htt ...
- python 把多个list合并为dataframe并输出到csv文件
import pandas as pd a = [1,2,3] b = ['a','b','c'] test = pd.DataFrame({'a_list':a,'b_list':b}) 将两个列表 ...
- 对Word2Vec的理解
1. word embedding 在NLP领域,首先要把文字或者语言转化为计算机能处理的形式.一般来说计算机只能处理数值型的数据,所以,在NLP的开始,有一个很重要的工作,就是将文字转化为数字,把这 ...