<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[实践OK]linux ulimit调优之ulimit -S -c 0  /dev/null。CentOS修改ulimit（最大进程数和最大文件打开数)]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 02 Mar 2011 09:40:43 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	一、永久修改 ulimit 限制，需要修改系统配置文件：<br/><br/>编辑 /etc/security/limits.conf 文件<br/>打开 /etc/security/limits.conf 文件并添加以下行：<br/>* soft nofile 20480<br/>* hard nofile 20480<br/>* soft nproc&nbsp;&nbsp;20480<br/>* hard nproc&nbsp;&nbsp;20480<br/>hive -nofile&nbsp;&nbsp;20480<br/>hive -nproc&nbsp;&nbsp; 20480<br/><br/>二、打开 /etc/sysctl.conf 文件并添加或修改以下内容：<br/>fs.file-max = 2097152 <br/><br/>文章尾部有更详细的说明。<br/><br/>=================================================<br/>一）/etc/profile里有一行，&nbsp;&nbsp;ulimit -S -c 0 &gt; /dev/null，非Root登录还提示一个：<br/>Last login: Thu Nov&nbsp;&nbsp;8 10:54:22 2018 from 10.4.12.52<br/>-bash: ulimit: open files: cannot modify limit: Operation not permitted<br/><br/><br/>vi /etc/profile<br/>ulimit -n 204800<br/># No core files by default<br/>ulimit -S -c 0 &gt; /dev/null 2&gt;&amp;1<br/><br/>解释：<br/><textarea name="code" class="php" rows="15" cols="100">
首先：
ulimit -S -c 0
是ulimit命令，
-c选项：设置core文件的最大值.单位:blocks
就是段错误时产生的core文件，后面加文件大小。就是设置段错误不产生core文件。
&gt; /dev/null
ulimit输出的结果保存到/dev/null文件，而这个文件是系统的一个文件，它不保存任何信息。所以如果有不想的输出数据，重定向到这个文件就可以了。这时，标准输出（文件句柄1）是指向这个文件
2&gt;&amp;1
标准错误（文件名柄2）复制文件句柄为1的地方，也就是/dev/null
所以这句的意思，就是设置core文件大小为0，然后输出信息以及错误信息都不输出在显示器上。
</textarea><br/><br/><br/>系统值65535，用户值65536，内核的值1048576不要动：<br/>一）vi /etc/sysctl.conf<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fs.file-max = 65535<br/><br/>二）大数据ELK的需要65536：<br/>&nbsp;&nbsp;&nbsp;&nbsp;vi /etc/security/limits.conf<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soft&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;65536<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hard&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;65536&nbsp;&nbsp;<br/>三）这个不用修改：找到问题了，centos系统设置每个进程的最大打开文件句柄数不能超过1048576。可以通过修改/proc/sys/fs/nr_open加大进程数。<br/>&nbsp;&nbsp;&nbsp;&nbsp;cat /proc/sys/fs/nr_open<br/>&nbsp;&nbsp;&nbsp;&nbsp;1048576<br/><br/>四）/etc/security/limits.d/90-nproc.conf文件尾添加<br/>* soft nproc 204800&nbsp;&nbsp;<br/>* hard nproc 204800&nbsp;&nbsp;<br/><br/>五）/etc/security/limits.d/def.conf文件尾添加<br/>* soft nofile 204800&nbsp;&nbsp;<br/>* hard nofile 204800&nbsp;&nbsp;<br/><br/>ulimit -a<br/>core file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(blocks, -c) 0<br/>data seg size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -d) unlimited<br/>scheduling priority&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-e) 0<br/>file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blocks, -f) unlimited<br/>pending signals&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-i) 62224<br/>max locked memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -l) 64<br/>max memory size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -m) unlimited<br/>open files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(-n) 204800<br/>pipe size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(512 bytes, -p) 8<br/>POSIX message queues&nbsp;&nbsp;&nbsp;&nbsp; (bytes, -q) 819200<br/>real-time priority&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(-r) 0<br/>stack size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(kbytes, -s) 8192<br/>cpu time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (seconds, -t) unlimited<br/>max user processes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(-u) 204800<br/>virtual memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(kbytes, -v) unlimited<br/>file locks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(-x) unlimited<br/><br/>来自：<a href="https://blog.csdn.net/yu757371316/article/details/77863173" target="_blank">https://blog.csdn.net/yu757371316/article/details/77863173</a><br/>=========================================================================================<br/>ulimit -a 用来显示当前的各种用户进程限制。<br/>&nbsp;&nbsp;&nbsp;&nbsp;Linux对于每个用户，系统限制其最大进程数。为提高性能，可以根据设备资源情况，<br/>&nbsp;&nbsp;&nbsp;&nbsp;设置各linux 用户的最大进程数，下面我把某linux用户的最大进程数设为10000个：<br/>&nbsp;&nbsp;&nbsp;&nbsp; ulimit -u 10000<br/>&nbsp;&nbsp;&nbsp;&nbsp; 对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言，<br/>&nbsp;&nbsp;&nbsp;&nbsp; 最好通过使用 ulimit -n xx 修改每个进程可打开的文件数，缺省值是 1024。<br/>&nbsp;&nbsp;&nbsp;&nbsp; ulimit -n 4096 将每个进程可以打开的文件数目加大到4096，缺省为1024<br/>&nbsp;&nbsp;&nbsp;&nbsp; 其他建议设置成无限制（unlimited）的一些重要设置是：<br/>&nbsp;&nbsp;&nbsp;&nbsp; 数据段长度：ulimit -d unlimited<br/>&nbsp;&nbsp;&nbsp;&nbsp; 最大内存大小：ulimit -m unlimited<br/>&nbsp;&nbsp;&nbsp;&nbsp; 堆栈大小：ulimit -s unlimited<br/>&nbsp;&nbsp;&nbsp;&nbsp; CPU 时间：ulimit -t unlimited<br/>&nbsp;&nbsp;&nbsp;&nbsp; 虚拟内存：ulimit -v unlimited<br/><br/>我们公司服务器需要调整ulimit的stack size 参数调整为unlimited 无限，使用ulimit -s unlimited时只能在当时的shell见效，重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了，source /etc/profile使修改文件生效。<br/><br/>PS：如果你碰到类似的错误提示<br/>ulimit: max user processes: cannot modify limit: 不允许的操作 <br/>ulimit: open files: cannot modify limit: 不允许的操作<br/><br/>为啥root用户是可以的？普通用户又会遇到这样的问题？<br/>看一下/etc/security/limits.conf大概就会明白。<br/>linux对用户有默认的ulimit限制，而这个文件可以配置用户的硬配置和软配置，硬配置是个上限。<br/>超出上限的修改就会出“不允许的操作”这样的错误。<br/><br/>在limits.conf加上<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soft&nbsp;&nbsp;&nbsp;&nbsp;noproc&nbsp;&nbsp;10240<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hard&nbsp;&nbsp;&nbsp;&nbsp;noproc&nbsp;&nbsp;10240<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soft&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;10240<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hard&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;10240<br/>就是限制了任意用户的最大线程数和文件数为10240。<br/><br/>来源：http://antsw.blog.51cto.com/936097/214997<br/><br/><br/>来自人工智能：<br/>在 CentOS 中，可以通过查看系统的文件句柄数量以及调整 `ulimit` 的软硬限制来管理系统资源。以下是相关步骤：<br/><br/>### 1. **查看当前系统的文件句柄数**<br/><br/>可以使用以下方法查看系统当前打开的文件句柄数量。<br/><br/>#### 1.1 使用 `lsof` 查看所有进程的文件句柄数量<br/><br/>```bash<br/>lsof &#124; wc -l<br/>```<br/><br/>`lsof` 命令列出所有打开的文件，`wc -l` 统计文件句柄数量。这个命令输出的是系统当前所有打开的文件句柄的总数。<br/><br/>#### 1.2 查看单个进程的文件句柄数<br/><br/>如果你只想查看某个进程的文件句柄数，例如 PID 为 1234，可以使用：<br/><br/>```bash<br/>ls /proc/1234/fd &#124; wc -l<br/>```<br/><br/>`/proc/[PID]/fd` 目录包含该进程打开的文件描述符，通过统计这个目录中的文件数量可以得到文件句柄数。<br/><br/>### 2. **查看和修改 `ulimit` 限制**<br/><br/>`ulimit` 用于控制用户或进程的资源使用，包括打开的文件句柄数量（文件描述符）。你可以查看和修改 `ulimit` 的软硬限制。<br/><br/>#### 2.1 查看当前的文件句柄限制<br/><br/>使用 `ulimit` 命令可以查看当前的文件句柄限制：<br/><br/>- 查看软限制（当前会话的限制）：<br/>&nbsp;&nbsp;```bash<br/>&nbsp;&nbsp;ulimit -n<br/>&nbsp;&nbsp;```<br/><br/>- 查看硬限制（系统最大允许的限制）：<br/>&nbsp;&nbsp;```bash<br/>&nbsp;&nbsp;ulimit -Hn<br/>&nbsp;&nbsp;```<br/><br/>#### 2.2 临时修改文件句柄限制<br/><br/>你可以临时修改当前会话的软硬限制。注意，临时修改只对当前会话有效，重启后会恢复默认值。<br/><br/>- 修改软限制：<br/>&nbsp;&nbsp;```bash<br/>&nbsp;&nbsp;ulimit -Sn [新的软限制值]<br/>&nbsp;&nbsp;```<br/><br/>- 修改硬限制：<br/>&nbsp;&nbsp;```bash<br/>&nbsp;&nbsp;ulimit -Hn [新的硬限制值]<br/>&nbsp;&nbsp;```<br/><br/>例如，设置软限制为 10240，硬限制为 20480：<br/><br/>```bash<br/>ulimit -Sn 10240<br/>ulimit -Hn 20480<br/>```<br/><br/>#### 2.3 永久修改文件句柄限制<br/><br/>为了永久修改 `ulimit` 限制，需要修改系统配置文件：<br/><br/>##### 编辑 `/etc/security/limits.conf` 文件<br/><br/>打开 `/etc/security/limits.conf` 文件并添加以下行：<br/><br/>```bash<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soft&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;10240<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hard&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;20480<br/>```<br/><br/>这将把所有用户的软限制设置为 10240，硬限制设置为 20480。你也可以为特定用户或组设置不同的限制。<br/><br/>##### 编辑 `/etc/sysctl.conf` 文件<br/><br/>为了确保系统内核支持更高的文件句柄数，还需要修改内核参数。打开 `/etc/sysctl.conf` 文件并添加或修改以下内容：<br/><br/>```bash<br/>fs.file-max = 2097152<br/>```<br/><br/>然后执行以下命令应用更改：<br/><br/>```bash<br/>sudo sysctl -p<br/>```<br/><br/>##### 编辑 `/etc/pam.d/common-session` 文件<br/><br/>确保 PAM 模块支持读取 `limits.conf`，在 `/etc/pam.d/common-session` 文件中添加以下行：<br/><br/>```bash<br/>session required pam_limits.so<br/>```<br/><br/>### 3. **重启服务或系统**<br/><br/>如果你修改了文件句柄的永久设置，需要重启系统或相关服务以使其生效：<br/><br/>```bash<br/>sudo reboot<br/>```<br/><br/>或针对特定服务：<br/><br/>```bash<br/>sudo systemctl restart [服务名]<br/>```<br/><br/>### 总结<br/><br/>- 使用 `lsof &#124; wc -l` 可以查看当前系统的句柄数。<br/>- `ulimit -n` 查看软限制，`ulimit -Hn` 查看硬限制。<br/>- 临时修改限制使用 `ulimit -Sn` 和 `ulimit -Hn`。<br/>- 永久修改限制需要编辑 `/etc/security/limits.conf`、`/etc/sysctl.conf`，并确保 PAM 模块配置正确。<br/><br/>这样可以有效管理 CentOS 系统中的文件句柄资源。
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]linux ulimit调优之ulimit -S -c 0  /dev/null。CentOS修改ulimit（最大进程数和最大文件打开数)]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>