一般新机器,在非root用户下部署java项目之前,一定需要新调整下机器的参数,这里与我们的java进程息息相关的就是 /etc/ecurity/limits 这里的配置。
/etc/ecurity/limits 限制住了系统用户下所有的文件句柄数,线程数,cpu时间片等等。我们这里只需要关注文件 句柄数和线程数 。
可以查看系统的资源限制,如下:
上面的 open files (-n) 65536 和 max user processes (-u) 4096 是我们重点关注的。它限制了文件最大句柄数和线程数。
编辑 /etc/security/limits.conf , 修改如下配置:
注意 :还需要修改一个地方,否则我们进程的最大限制会被重置掉,笔者之前在这个地方踩了不少坑。需要编辑 /etc/security/limits.d/ 下的文件。
这个 * 会有一个软线程的最大限制为 4096,会覆盖 /etc/security/limits.conf 里的配置。一般程序启动的线程都是属于 soft nproc 。
网上的说法是修改了 limit 后,重启linux系统才会奏效。事实上不是这样,修改了之后,新启动的进程会使用新的limit限制参数,而之前起的进程还是会使用老的配置,所以只需要重启进程即可。
可以评估一个应用的指标情况,可以看他的句柄数、线程数等等, 在 /proc/{pid}/fd/ 可以查看进程所有打开的文件,socket连接也是一个文件,当存在很多socket没有释放的话,说明open 文件没有关闭或者释放。
一般情况下, ulimit -n 的数值是1024.当进程打开的文件数目超过此限制时,该进程就会退出。
因此,有时需要修改此限制。linux调优之修改最大连接数(ulimit命令)
如果只是普通用户,只是暂时的修改ulimit -n,可以直接shell命令来修改(ulimit -n 1024000)。
但是这个设置时暂时的保留!当我们退出bash后,该值恢复原值。
如果要永久修改ulimit,需要修改/etc/security/limits.conf。limits.conf配置(ulimit设置永久生效)
vim /etc/security/limits.conf
# 添加如下的行
* soft nofile 4100
* hard nofile 4100
以下是说明:
* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
添加格式:
username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。
resource:
core - 限制内核文件的大小(kb)
date - 最大数据大小(kb)
fsize - 最大文件大小(kb)
memlock - 最大锁定内存地址空间(kb)
nofile - 打开文件的最大数目
rss - 最大持久设置大小(kb)
stack - 最大栈大小(kb)
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
永久生效方法。修改etc/securitylimits,conf文件在文件末尾添加如下内容,然后重启服务器或重新登录即可生效。重启后用查看命令进行查看,如果显示数字等于204800即证明修改成功。
屏幕排线问题,因为意外摔落或者外力挤压。黑屏就是说什么也看不见,但是要是对着强光又可以隐隐约约看见,这样的一般都是黑屏。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)