ulimit用于限制shell启动进程所占用的资源。其中ulimit -n用于限制进程能够打开的文件描述符的最大数目。因为任何设备在linux下都是文件,通信的接口也有专门的接口文件负责,所以linux下进程tcp链接的最大并发量也受限于该值。

l  修改方案

步骤一:通过命令修改进程能够打开的文件数目

ulimit -n <file_num>  此命令将进程能够打开的文件描述符的最大数目修改为file_num。

如:ulimit -n 102400

注:ulimit -n  命令可查看进程能够打开的文件描述符的最大数目。

如果步骤一执行失败,系统回显类似于“Operation notpermitted”之类的话,说明上述限制修改失败。是因为在<file_num>中指定的数值超过了Linux系统对该用户打开文件数的软限制或硬限制。因此,就需要修改Linux系统对用户的关于打开文件数的软限制和硬限制。此时需执行以下步骤。

步骤二:修改/etc/security/limits.conf文件,在文件中添加如下行:

user00 soft nofile 10240  修改系统对用户user00 的软限制(软限制是指限制用户同时打开的文件数目)

user00 hard nofile 10240  修改系统对用户user00 的软限制(硬限制是指系统根据硬件资源(主要指内存)计算出来的最多可打开的文件数目)

可用'*'号表示修改所有用户的限制;

通常软限制低于硬限制;

建议不要将软限制和硬限制修改过大。

步骤三:修改/etc/pam.d/login文件,在文件中添加如下行:

session required /lib/security/pam_limits.so

这是告诉Linux在用户完成系统登录后,应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值。

步骤四:查看Linux系统级的最大打开文件数限制,使用如下命令:

这表明这台Linux系统最多允许同时打开(即包含所有用户打开文件数总和)800037个文件,是Linux系统级硬限制,所有用户级的打开文件数限制都不应超过这个数值。该值是Linux系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制,如果没有特殊需要,不应该修改此限制,除非想为用户级打开文件数限制设置超过此限制的值。修改此硬限制的方法是修改/etc/rc.local脚本,在脚本中添加如下行:

echo 8000037 > /proc/sys/fs/file-max

这是让Linux在启动完成后强行将系统级打开文件数硬限制设置为800037。

在此,可再执行步骤一,如仍不能打开期望的文件数目,执行步骤五。

步骤五:修改用户登录脚本中的ulimit -n命令

打开/etc/profile脚本文件,在文件中查找是否使用了ulimit-n限制了用户可同时打开的最大文件数量,如果找到,则删除这行命令,或者将其设置的值改为合适的值,然后保存文件,用户退出并重新登录系统即可。

通过上述步骤,就为支持高并发TCP连接处理的通讯处理程序解除关于打开文件数量方面的系统限制。

继续重新登陆,如出现登录的时候

ulimit: open files: cannot modify limit: Operation not permitted

还有的话,需要重启一下ssh

ps:如果你用的脚本或者其他的工具启动进程,请保证里面没有继承原来的设置

修改 进程占用资源限制ulimit(限制服务器的链接数目)的更多相关文章

  1. Linux常用获取进程占用资源情况手段

    测试环境:Ubuntu14.04 1.  获取进程ID号 ps -aux | grep your_process_name 例如: xxx@xxx:~$ ps -e |grep Midlet|awk ...

  2. 修改进程占用内存SetProcessWorkingSetSize函数(多篇相关文章值得学习)

    物理内存和虚拟内存 物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了.看机器配置的时候,看的就是这个物理内存. 如果执行的程序很大或很多,就会导致物理内存消耗殆尽.为 ...

  3. linux下查找java进程占用CPU过高原因

    1. 查找进程 top查看进程占用资源情况 明显看出java的两个进程22714,12406占用过高cpu.   2.查找线程 使用top -H -p <pid>查看线程占用情况   3. ...

  4. postgresql某进程占用cpu资源过高,降不下来

    由于是开发阶段,所以并没有配置postgres的参数,都是使用安装时的默认配置,以前运行也不见得有什么不正常,可是前几天我的cpu资源占用突然升高.查看进程,发现有一个postgres的进程占用CPU ...

  5. 解决一个 MySQL 服务器进程 CPU 占用 100%解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记》[转]

    转载地址:http://bbs.chinaunix.net/archiver/tid-1823500.html 解决一个 MySQL 服务器进程 CPU 占用 100%解决一个 MySQL 服务器进程 ...

  6. sql server 2000数据库 最近经常出现某进程一直占用资源,阻塞?死锁?

    OA的数据库最近多次出现某进程一直占用资源,导致其他进程无法执行.使用sp_who2 和 sql server profiler跟踪查询,发现有以下几个语句常常占用资源: 1.declare @P1 ...

  7. Apache服务器httpd.exe进程占用cpu超过50%的解决方法

    httpd.exe进程占用cpu超过50%,关闭掉Apache服务,cpu应用率立刻下降到0.  重新启动Apache又出现占用cpu高的情况.  原因是:httpd.exe和防火墙配置有冲突. 解决 ...

  8. [linux]top命令详解-实时显示系统中各个进程的资源占用状况

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...

  9. APACHE服务器httpd.exe进程占用cpu100%的解决方法

    httpd.exe进程占用cpu%100,关闭掉AppServ服务,cpu应用率立刻下降到0. 重新启动AppServ又出现占用cpu高的情况. 原因,httpd.exe和防火墙配置有冲突. 解决方法 ...

随机推荐

  1. Spring Boot-Logback 配置(区分环境、分包、分级别打印)

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <!--生产环境 - ...

  2. Redis集群方案收集

    说明: 如果不考虑客户端分片去实现集群,那么市面上基本可以说就三种方案最成熟,它们分别如下所示: 系统 贡献者 是否官方Redis实现 编程语言 Twemproxy Twitter 是 C Redis ...

  3. AngularJS $q 和 $q.all 单个数据源和多个数据源合并(promise的说明)

    这篇文章讲的不错, angular $q  和 promise!! -------------------------------------------------------------- 通过调 ...

  4. TCP_NODELAY和TCP_CORK nagle算法和cork算法

    TCP_NODELAY 默认情况下,发送数据採用Nagle 算法.这样尽管提高了网络吞吐量,可是实时性却减少了,在一些交互性非常强的应用程序来说是不同意的.使用TCP_NODELAY选项能够禁止Nag ...

  5. [React] Build a slide deck with mdx-deck using Markdown + React

    In this lesson we'll use mdx-deck to create a slide deck using Markdown and React. We'll look at add ...

  6. 一张图告诉你是须要 SQL 还是 Hadoop

    译序 非常多朋友问时下如火如荼的 Hadoop 是否适合引进我们自己的项目,什么时候用 SQL.什么时候用 Hadoop,它们之间怎样取舍?Aaron Cordova 用一张图来回答你这个问题,对于不 ...

  7. Java生成带logo 的二维码

    这个工具类主要实现了两点功能: 1. 生成任意文链接的二维码. 2. 在二维码的中间加入图像. 主要实现步骤: 第一步: 导入QR二维码3.0 版本的core包和一张jpg图片(logo). core ...

  8. 洛谷 P1525 关押罪犯==codevs 1069 关押罪犯[NOIP 2010]

    P1525 关押罪犯 513通过 1.4K提交 题目提供者该用户不存在 标签图论并查集NOIp提高组2010 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 咳咳.竟MLE了. 囧.运行时错误 ...

  9. linux下库的使用

    1 指定使用了什么库 -lstdc++ 这样链接的时候就会去指定的目录下找链接库,优先使用动态库.然后在elf文件中加入依赖关系,放在NEEDED中. 2 指定在哪里去找库 -Wl,-rpath,so ...

  10. android7.0 编译问题及解决【转】

    本文转载自:http://blog.csdn.net/zhangmingbao2016/article/details/52699182 注意:Linux操作系统上编译Android 7.0必须使用o ...