如何修改无法打开游戏进程句柄的最大文件句柄数目

Windows系统进程打开文件句柄数的限制 -
- ITeye技术网站
博客分类:
在linux系统中,进程打开的文件句柄数量的限制,可用ulimit命令来查看和修改,或者修改/etc/security/limits.conf也可以修改。但在windows中,目前没有找到方便的方法查看这个值。
下面这段代码可以用来查看该值,设置的办法还没有找到。
Windows server 2003下面程序的值是509,加上标准I/O和标准错误文件句柄,系统这个值应该是512。其他的windows系统如果需要可以用跑一下下面的代码试一下。
int _tmain(int argc, _TCHAR* argv[])
p=fopen("E:\\first.txt","rb");
if(p==NULL)
printf("\nerror on open E:\\first.txt file!");
int i = 1;
while(p!=NULL)
p=fopen( "E:\\first.txt", "rb");
printf("%d\n",i);
浏览: 79254 次
来自: 北京
最近出了SQL:2011標準,希望樓主也更新下
太长了,又是E文,要是有些例子可能好理解些
很谢,找了很久
太高深了,我还处在用户层面怎样修改进程打开文件句柄数的限制_百度知道
怎样修改进程打开文件句柄数的限制
提问者采纳
“操作”写“打开”,改为你想用的程序 ========================== 没有rez类型的话。 如果无效,在文件类型页里,把“打开”操作编辑一下,找到rez类型的项、子串和自定义数据等资源,在新对话框内点“新建”,平台无关的(XML格式)的资源文件,再选中新建rez类型点“高级”,在“文件夹选项”对话框“文件类型”页里点“新建”,打开方式;C#使用的资源文件格式。 对rez文件右键,确定,打开“文件夹选项”对话框rez resources是“受控资源文件”,钩上始终有选择的程序打开这种文件。可以存放位图,选择程序,是VB&#47
其他类似问题
为您推荐:
句柄的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
又一个计算机技术爱好者
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
# ulimit -n
----查看进程打开的文件句柄数量
# lsof -n | awk '{print $2}'| sort | uniq -c | sort -nr | grep&过滤条件
其中第一列是打开的句柄数,第二列是进程ID。
----修改linux的最大文件句柄数限制的方法:
&&&&& 1)ulimit -n 65535&&
&&&&&&&&&&& 在当前session有效,用户退出或者系统重新后恢复默认值
&&&&& 2)修改profile文件:在profile文件中添加:ulimit -n 65535&
&&&&&&&&&& 只对当个用户有效
&&&&& 3)修改文件:/etc/security/limits.conf,在文件中添加:(立即生效-当前session中运行ulimit -a命令无法显示)
*&soft&nofile&32768&#限制单个进程最大文件句柄数(到达此限制时系统报警)&&
*&hard&nofile&65536&#限制单个进程最大文件句柄数(到达此限制时系统报错)&&&&&&& 4)修改文件:/etc/sysctl.conf。在文件中添加:
fs.file-max=655350&#限制整个系统最大文件句柄数&&&&&&& 运行命令:/sbin/sysctl -p 使配置生效&
阅读(4005)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Linux下查看及修改进程打开的文件句柄数量',
blogAbstract:'\r\n\r\n----查看Linux系统默认的最大文件句柄数,系统默认是1024\r\n\r\n# ulimit -n\r\n\r\n1024\r\n\r\n----查看进程打开的文件句柄数量\r\n\r\n# lsof -n | awk \'{print $2}\'| sort | uniq -c | sort -nr | grep&过滤条件\r\n&\r\n',
blogTag:'linux',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'又一个计算机技术爱好者',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}教你修改Linux下高并发socket最大连接数所受的各种限制
&1、修改用户进程可打开文件数限制
在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:
[speng@as4 ~]$ ulimit -n
这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中还得除去每个进程必然打开的标准输入,标准输出,标准错误,服务器监听 socket,进程间通讯的unix域socket等文件,那么剩下的可用于客户端socket连接的文件数就只有大概4个左右。也就是说缺省情况下,基于Linux的通讯程序最多允许同时1014个TCP并发连接。
对于想支持更高数量的TCP并发连接的通讯处理程序,就必须修改Linux对当前用户的进程同时打开的文件数量的软限制(soft limit)和硬限制(hardlimit)。其中软限制是指Linux在当前系统能够承受的范围内进一步限制用户同时打开的文件数;硬限制则是根据系统硬件资源状况(主要是系统内存)计算出来的系统最多可同时打开的文件数量。通常软限制小于或等于硬限制。
修改上述限制的最简单的办法就是使用ulimit命令:
[speng@as4 ~]$ ulimit -n
上述命令中,在中指定要设置的单一进程允许打开的最大文件数。如果系统回显类似于&Operation notpermitted&之类的话,说明上述限制修改失败,实际上是因为在中指定的数值超过了Linux系统对该用户打开文件数的软限制或硬限制。因此,就需要修改Linux系统对用户的关于打开文件数的软限制和硬限制。
第一步,修改/etc/security/limits.conf文件,在文件中添加如下行:
speng soft nofile 10240
speng hard nofile 10240
其中speng指定了要修改哪个用户的打开文件数限制,可用&*'号表示修改所有用户的限制;soft或hard指定要修改软限制还是硬限制;10240则指定了想要修改的新的限制值,即最大打开文件数(请注意软限制值要小于或等于硬限制)。修改完后保存文件。
第二步,修改/etc/pam.d/login文件,在文件中添加如下行:
session required /lib/security/pam_limits.so
这是告诉Linux在用户完成系统登录后,应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),而pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值。修改完后保存此文件。
第三步,查看Linux系统级的最大打开文件数限制,使用如下命令:
[speng@as4 ~]$ cat /proc/sys/fs/file-max
这表明这台Linux系统最多允许同时打开(即包含所有用户打开文件数总和)12158个文件,是Linux系统级硬限制,所有用户级的打开文件数限制都不应超过这个数值。通常这个系统级硬限制是Linux系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制,如果没有特殊需要,不应该修改此限制,除非想为用户级打开文件数限制设置超过此限制的值。修改此硬限制的方法是修改/etc/rc.local脚本,在脚本中添加如下行:
echo 22158 & /proc/sys/fs/file-max
这是让Linux在启动完成后强行将系统级打开文件数硬限制设置为22158。修改完后保存此文件。
完成上述步骤后重启系统,一般情况下就可以将Linux系统对指定用户的单一进程允许同时打开的最大文件数限制设为指定的数值。如果重启后用 ulimit-n命令查看用户可打开文件数限制仍然低于上述步骤中设置的最大值,这可能是因为在用户登录脚本/etc/profile中使用ulimit -n命令已经将用户可同时打开的文件数做了限制。由于通过ulimit-n修改系统对用户可同时打开文件的最大数限制时,新修改的值只能小于或等于上次 ulimit-n设置的值,因此想用此命令增大这个限制值是不可能的。所以,如果有上述问题存在,就只能去打开/etc/profile脚本文件,在文件中查找是否使用了ulimit-n限制了用户可同时打开的最大文件数量,如果找到,则删除这行命令,或者将其设置的值改为合适的值,然后保存文件,用户退出并重新登录系统即可。
通过上述步骤,就为支持高并发TCP连接处理的通讯处理程序解除关于打开文件数量方面的系统限制。
【声明】:黑吧安全网()登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱,我们会在最短的时间内进行处理。
上一篇:【】【】二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
1、查看当前文件描述符的限制数目的命令:
2、修改文件描述符的限制数目
2.1 临时改变当前会话:
ulimit -n 65536
2.2 永久变更需要下面两个步骤:
1) 修改/etc/security/limits.conf
文件(不要忘记前面的*),如下:
vi /etc/security/limits.conf
*&&&&&&&&&&&&&& soft&&& nofile&&&&&&&&&&
*&&&&&&&&&&&&&& hard&&& nofile&&&&&&&&&&
保存退出后重新登录,其最大文件描述符已经被永久更改了;但是需要经过下面的步骤2)之后才能生效。
2) 重新加载库:
打开文件:
vi /etc/pam.d/login
在最后加上:
session&&& required
/lib64/security/pam_limits.so
3.查看和修改系统的最大打开文件限制位置: /proc/sys/fs/file-max查看命令: &cat /proc/sys/fs/file-max修改: 通过vi修改 /etc/sysctl.conf 文件,在该文件中加上:fs.file-max=655350可以在令针对此参数 的修改一直生效,在该文件中,修改完后执行命令: sysctl -p使修改立即生效,而无需重启;可使用下面两条命令验证一下修改是否成功: cat /proc/sys/fs/file-max或者 sysctl fs.file-max4.修改nr_open,通过vi修改 /etc/sysctl.conf,在该文件中加上:fs.nr_open = 2000000
可以在令针对此参数 的修改一直生效,在该文件中,修改完后执行命令: sysctl -p使修改立即生效,而无需重启;注意:a.&&&&所有进程打开的文件描述符数不能超过/proc/sys/fs/file-maxb.&&&&单个进程打开的文件描述符数不能超过user limit中nofile的soft limitc.&&&&nofile的soft limit不能超过其hard limitd.&&&&nofile的hard limit不能超过/proc/sys/fs/nr_open
二、修改端口限制
主要是对内核参数sysctl.conf的优化,/etc/sysctl.conf
是用来控制linux网络的配置文件,对于依赖网络的程序(如web服务器和cache服务器)非常重要,RHEL默认提供的最好调整。推荐配置(把下面内容添加进去):
  net.ipv4.ip_local_port_range = net.core.rmem_max = net.core.wmem_max = net.ipv4.tcp_rmem =
net.ipv4.tcp_wmem =
net.ipv4.tcp_fin_timeout = 10net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_timestamps = 0net.ipv4.tcp_window_scaling = 0net.ipv4.tcp_sack = 0net.core.netdev_max_backlog = 30000net.ipv4.tcp_no_metrics_save = 1net.core.somaxconn = 22144net.ipv4.tcp_syncookies = 0net.ipv4.tcp_max_orphans = 262144net.ipv4.tcp_max_syn_backlog = 262144net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2vm.overcommit_memory = 1fs.file-max = 2000000fs.nr_open = 2000000
  这个配置参考于cache服务器varnish的推荐配置和SunOne
服务器系统优化的推荐配置。这里有个对端口范围的限制如果不做修改原始的返回只有2.8万个port区间。
对上述内存参数的具体操作命令示例:
1)查看端口范围:
[root@slave2 sub_client]# sysctl -a | grep
net.ipv4.ip_local_port_range =
2)修改内核参数sysctl.conf,打开该文件,
vi /etc/sysctl.conf
如果文件中有参数net.ipv4.ip_local_port_range的配置,则将其修改为:
net.ipv4.ip_local_port_range =
否则,直接加上这句话。
3)让配置立即生效:
sysctl -p另外,端口范围参数net.ipv4.ip_local_port_range不要超过,1024以下系统使用,65535以上设置会会提示失败:error: "Invalid argument" setting key "net.ipv4.ip_local_port_range"三、查看linux下虚拟内存情况& &&& &使用命令free,例如:[root@cddserver1 log_rd]#&free& & & & & & & & & total & & & & & & & used & & & &free & & & & &shared & &buffers & & cachedMem: & & & 7950788 & &1144080 & &6806708 & & & & &0 & & & 51432 & & &832588-/+ buffers/cache: & & 260060 & & &7690728Swap: & & &8093688 & & & 9764 & & & & 8083924-------------------------------------------------在linux kernel 2.6.25之前通过ulimit -n(setrlimit(RLIMIT_NOFILE))设置每个进程的最大打开文件句柄数不能超过NR_OPEN (),也就是100多w(除非重新编译内核),而在25之后,内核导出了一个sys接口可以修改这个最大值(/proc/sys/fs /nr_open).具体的changelog
阅读(2360)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'[原]查看、修改linux系统的最大链接数限制、文件描述符限制、端口范围限制、虚拟内存等',
blogAbstract:'\n一、修改最大连接数\n1、查看当前文件描述符的限制数目的命令:\nulimit -n\n2、修改文件描述符的限制数目\n2.1 临时改变当前会话:\nulimit -n 65536\n2.2 永久变更需要下面两个步骤:\n1) 修改/etc/security/limits.conf \n文件(不要忘记前面的*),如下:\nvi /etc/security/limits.conf\n*&&&&&&&&',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:9,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 进程id取窗口句柄 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信