易截截图软件、单文件、免安装、纯绿色、仅160KB

linux的最大进程句柄数设置

在Linux下,我们使用ulimit -n命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。
对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。
如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more  
在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more    131 24204   57 24244   57 24231   56 24264
其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
ps -aef|grep 24204 mysql  24204 24162 99 16:15 ?    00:24:25 /usr/sbin/mysqld
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。
Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。
方法如下,以root用户运行以下命令:
ulimit -HSn 4096
以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。
个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。
如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。
本文详文地址:http://www.bianceng.cn/OS/Linux/200706/3022.htm


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

linux 守护进程


int Daemon(char* szExecName = NULL)
{
 int res = 0;
 pid_t pc;
 pc = fork();
 if(pc < 0)
 {
  fprintf(stderr,"ERROR_Deamon()_fork(): failed!");
  return -1;
 }
 else if(pc == 0) //sub process
 {
 }
 else if( ......

打造Linux下的CD播放器

本文详细介绍了音频CD的基本知识,以及如何在Linux下编写实用的CD播放软件,内容涵盖音轨处理、播放控制和音量调节等诸多方面。
在目前的多媒体应用中,CD所承担的重要作用早已勿庸置疑,本文详细介绍了音频CD的基本知识,以及如何在Linux下编写实用的CD播放软件,内容涵盖音轨处理、播放控制和音量调节等诸多方面。
音频 ......

【Linux应用与驱动开发】Linux内核的排队自旋锁

排队自旋锁(FIFO Ticket Spinlock)是 Linux 内核 2.6.25 版本中引入的一种新型自旋锁,它解决了传统自旋锁由于无序竞争导致的“公平性”问题。本文详细介绍了排队自旋锁的设计原理和具体实现,并与 操作系统采用的类似技术进行比较。最后讨论可能的扩展排队自旋锁的一些想法。
引言
自旋锁(Spinlock)是一种 Lin ......

Ubuntu Linux系统开启TELNET服务的方法

Ubuntu Linux系统开启TELNET服务的方法
  RSS订阅,第一时间获取开源资讯动态  
1. sudo apt-get install xinetd telnetd
2. 安装成功后,系统也会有相应提示(好象7.10才有,6.10就没看到)
sudo vi /etc/inetd.conf并加入以下一行
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.tel ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号