在unix系统下,每个进程能打开的文件数由核心参数NOFILES设定。这个值一般是1024。但是许多shell使用了标准输入、标准输出、标准错误(描述符1、2、3),所以单个进程实际能打开的文件数为1024-3=1021个。如果没有确实的必要,最好不要去修改这个参数。
单个目录下的文件数由核心参数MAX_INODE设定,一般最大值是64000。但实际上一个目录下的文件数达到远低于上限的一定数量时,系统性能就已经大受影响。因此需要定时清理目录下的文件。
上面所说的核心参数的名称和数值在不同的平台下可能有所差异,在使用的时候最好查一下手册。
在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 把上面命令加到最后。(findsun提出的办法比较合理)
http://bbs.chinaunix.net/thread-639115-1-1.html
http://www.txwb.com/Article/serverHelp/Linux/200804/11508.html
Process pr = new Process();//声明一个
进程
类对象
pr.StartInfo.FileName = E://Program Files//Tencent//QQ//QQ.exe;//指定运行的程序,我的QQ的物理路径。
pr.Start();//运行QQ
还可以简单点:Process的静态方法Start();
Process.Start(String fileName);(+4重载) //filiName 是你要运行的程序名,是物理路径
关于TCP服务器最大并发连接数有一种误解就是“因为端口号上限为65535,所以TCP服务器理论上的可承载的最大并发连接数也是65535”。
先说结论:对于TCP服务端
进程
来说,他可以同时连接的客户端数量并不受限于可用端口号。并发连接数受限于linux可
打开
文件
数,这个数是可以配置的,可以非常大,所以实际上受限于系统性能。
现在做服务器开发不加上高并发根本没脸出门,所以为了以后吹水被别人怼“天天提高并发,你自己实现的最高并发是多少”的时候能义正言辞的怼回去,趁着元旦在家没事决定自己写个demo搞一搞。
这个测试主要是想搞明白Linux下哪些参数配置限制了连接数的最大值,上限是多少。
文章来源:http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/
假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时
打开
了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。
而实际应用的环境要比这种假设复杂的多,例...
-H选项和-S选项分别表示对给定资源的硬限制(hard limit)和软限制(soft limit)进行设置。
硬限制(hard limit)一旦被设置以后就不能被非root用户修改,软限制(soft limit)可以增长达到硬限制(hard limit)。
如果既没有指定-H选项也没有指定-S选项,那么硬限制(hard limit)和软限制(soft limit)都会被设置。
limit的值可以是一个数值,也可以是一些特定的值,比如:hard,so
linux 系统中单个
进程
的最大线程数有其最大的限制 PTHREAD_THREADS_MAX这个限制可以在 /usr/include/bits/local_lim.h 中查看对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大...
################################################################################
一个
进程
,能
打开
的最大
文件
个数
################################################################################
打开
文件
是什么意思?
linux最大
打开
文件
句柄数,即
打开
文件
数最大限制,就是规定的单个
进程
能够
打开
的最大
文件
句柄数量(Socket连接也算在里面,默认大小1024)
liunx中
文件
句柄有两个限制,一种是用户级的,一种是系统级的(也叫内核级)
系统级的最大限制:
cat /proc/sys/fs/file-max
用户级的最大限制
ulimit -n(默认是1024,向阿里云华为云这种云主机一般是65535)
附ulimit 参数说明:
查看某个
进程
的最大
打开
文件
数和当前
打开
文件
数
先找到该
进程
的
进程
如何增加Linux系统最大
文件
打开
数目呢?查看系统最大可
打开
文件
数以下命令查看操作系统级最多可
打开
文件
数,fd数目$ cat /proc/sys/fs/file-max我用ubuntu 16输出:573738怎么调整系统最大可
打开
文件
数# sysctl -w fs.file-max=1000000需要用root用户执行以上命令,设最大为一百万。但在命令行上修改了这个配置,会在下一次操作系统重启后重...
https://blog.csdn.net/wowocpp/article/details/86673886?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
cat /