系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。

ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。
ulimit 指令参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
选项
[options]    含义 
-H  
设置硬资源限制,一旦设置不能增加。 
-S  
设置软资源限制,设置后可以增加,但是不能超过硬资源设置。   
-a  
显示当前所有的 limit 信息。  
-c  
最大的 core 文件的大小, 以 blocks 为单位。 
-d  
进程最大的数据段的大小,以 Kbytes 为单位。 
-f  
进程可以创建文件的最大值,以 blocks 为单位。
-l  
最大可加锁内存大小,以 Kbytes 为单位。   
-m  
最大内存大小,以 Kbytes 为单位。
-n  
Linux操作系统对一个进程可以打开最大文件描述符的数量。 
-p  
管道缓冲区的大小,以 Kbytes 为单位。 
-s  
线程栈大小,以 Kbytes 为单位。   
-t  
最大的 CPU 占用时间,以秒为单位。    
-u  
用户最大可用的进程数。   
-v  
进程最大可用的虚拟内存,以 Kbytes 为单位。

在我的centos 6.3 32位系统输入 ulimit -a 结果如下

这边重点描述下红色部分
ulimit -n

问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题。

在Linux下一切资源皆文件,普通文件是文件,磁盘打印机是文件,socket 当然也是文件。系统默认设置成1024,但是这个数字对于服务器特别是大并发的远远是不够的,所以,我们需要结合实际情况修改成一个更大更合理的值。

修改方法

vim /etc/security/limits.conf

1
2
3
#
确认包含下面的内容:
*
soft nofile 
65536
*
hard nofile 
65536

保存,然后重启

注:65536 是我这边的设定值,读者也可以自行设置一个合适的值,* 代表针对所有用户

同时还有个要注意的值 file-max 是设置 系统所有进程一共可以打开的文件数量 ,可以通过如下方法进行修改

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

或修改 /etc/sysctl.conf, 加入

fs.file-max = 6553560 重启生效

另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量

ulimit -u

比如我们在模拟大规模http并发测试的时候,客户端会报一个无法fork new proc异常,原因是受到了最大进程1024的限制

解除 Linux 系统的最大进程数

方法如下

vim /etc/security/limits.d/90-nproc.conf

1
2
3
#
添加如下的行
*         
soft    nproc     
10240
root      
soft    nproc     unlimited

转自:https://gitsea.com/2013/05/23/linux-ulimit%E8%AF%A6%E8%A7%A3/

高并发下linux ulimit优化的更多相关文章

  1. 高并发下的 Nginx 优化与负载均衡

    高并发下的 Nginx 优化   英文原文:Optimizing Nginx for High Traffic Loads 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. ...

  2. 高并发下的Nginx优化

    高并发下的Nginx优化 2014-08-08 13:30 mood Nginx    过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apach ...

  3. 嵌入式 如何定位死循环或高CPU使用率(linux) 及性能优化

    嵌入式 如何定位死循环或高CPU使用率(linux) ln -s /mnt/nfs/_install/usr/bin/sort /usr/bin/sort awk '{print $1,$2,$14, ...

  4. Random在高并发下的缺陷以及JUC对其的优化

    Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了.但并不是每个人都知道Ra ...

  5. 海量数据和高并发下的 Redis 业务优化实践

    本文内容是我在 6 月 23 日参加的深圳 GIAC 技术大会上演讲的文字稿. 观众朋友们,我是来自掌阅的工程师钱文品,掘金小册<Redis 深度历险>的作者.今天我带来的是分享主题是:R ...

  6. Tomcat调优总结(Tomcat自身优化、Linux内核优化、JVM优化)

    Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置.首先是对这几个参数的含义要有深刻而清楚的理解.以tomcat8.5为例,讲解参数. 同时也得认识到一点,tomcat调 ...

  7. php结合redis实现高并发下的抢购、秒杀功能

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...

  8. EF+MySQL乐观锁控制电商并发下单扣减库存,在高并发下的问题

    下订单减库存的方式 现在,连农村的大姐都会用手机上淘宝购物了,相信电商对大家已经非常熟悉了,如果熟悉电商开发的同学,就知道在买家下单购买商品的时候,是需要扣减库存的,当然有2种扣减库存的方式, 一种是 ...

  9. Linux 性能优化之 IO 子系统 系列 图

    http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...

随机推荐

  1. UVa 12627 奇怪的气球膨胀(分治)

    https://vjudge.net/problem/UVA-12627 题意:一开始有一个红气球.每小时后,一个红气球会变成3个红气球和1个蓝气球,而1个蓝气球会变成4个蓝气球.如图所示分别是经过0 ...

  2. JS进阶系列之this

    在javascript中,this的指向是在执行上下文的创建阶段确定的,其实只要知道不同执行方式下,this的指向分别是是什么,就能很好的掌握this这个让人摸不透的东西. 一.全局执行 全局执行又分 ...

  3. shell 清空指定大小的日志文件

    #!/bin/bash # 当/var/log/syslog大于68B时 if ! [ -f /var/log/syslog ] then echo "file not exist!&quo ...

  4. win10 鼠标指针

    https://www.ithome.com/html/zhuti/26449.htm

  5. NPOI操作

    1.操作Excel 准备生成的公共方法(将数据源DataTable转换成MemoryStream) /// <summary> /// 生成Excel /// </summary&g ...

  6. Python day8常用格式化format类2

    format常用格式化 tp1="i am {},age {},{}".format('LittlePage',18,'boy') tp2="i am {},age {} ...

  7. RabbitMQ入门_09_TTL

    参考资料:https://www.rabbitmq.com/ttl.html A. 为队列设置消息TTL TTL 是 Time-To-Live 的缩写,指的是存活时间.RabbitMQ 可以为每一个队 ...

  8. POJ - 2528 Mayor's posters(dfs+分治)

    POJ - 2528 Mayor's posters 思路:分治思想. 代码: #include<iostream> #include<cstdio> #include< ...

  9. xhr文件类型说明

    2017-08-08 18:31:08 xhr : XML HTTP Request,是一种在后台与服务器进行交互的数据.这意味着可以在不加载整个网页的情况下,对网页中的部分内容进行更新. 这是Aja ...

  10. 20170813pptVBA批量插入图片

    Sub AddSldIn() Dim Pre As Presentation Dim NewSld As Slide Set Pre = Application.ActivePresentation ...