CentOS 6.x limits changed on a existing running process

前段时间发了一篇关于CentOS 6.x ulimit配置文件变更为/etc/security/limits.d/90-nproc.conf  的文章.

但是如果你的系统中已经存在的进程的nproc是不会被变更过来的. 例如一个数据库服务器.

PostgreSQL所有的backend process都是从postmaster进程fork出来的, 如果postmaster进程的nproc还是老的配置的话, 资源限制依旧存在, 例如.

> psql

psql: could not fork new process for connection: Resource temporarily unavailable

could not fork new process for connection: Resource temporarily unavailable

这种情况通过修改/etc/security/limits.d/90-nproc.conf是无法实现的, 

* soft    nproc   131072

* hard    nproc   131072

但是又不能重启数据库进程怎么办呢?

只要你的内核够新2.6.32+, 那么就可以通过编辑进程的limits来实现.

例如

> ps -ewf|grep postgres

postgres  5721  5720  0 Feb26 ?        19:11:05 postgres: logger process   

主进程号是5720

# cd /proc/5720

# cat limits

Limit                     Soft Limit           Hard Limit           Units     

Max cpu time              unlimited            unlimited            seconds   

Max file size             unlimited            unlimited            bytes     

Max data size             unlimited            unlimited            bytes     

Max stack size            10485760             unlimited            bytes     

Max core file size        unlimited            unlimited            bytes     

Max resident set          unlimited            unlimited            bytes     

Max processes             1024                 131072               processes 

Max open files            131072               131072               files     

Max locked memory         51200000000          51200000000          bytes     

Max address space         unlimited            unlimited            bytes     

Max file locks            unlimited            unlimited            locks     

Max pending signals       256607               256607               signals   

Max msgqueue size         819200               819200               bytes     

Max nice priority         0                    0                    

Max realtime priority     0                    0                    

Max realtime timeout      unlimited            unlimited            us        

软限制还是1024, 修改方法

# echo -n "Max processes=131072:131072" > limits

# cat limits 

Limit                     Soft Limit           Hard Limit           Units     

Max cpu time              unlimited            unlimited            seconds   

Max file size             unlimited            unlimited            bytes     

Max data size             unlimited            unlimited            bytes     

Max stack size            10485760             unlimited            bytes     

Max core file size        unlimited            unlimited            bytes     

Max resident set          unlimited            unlimited            bytes     

Max processes             131072               131072               processes 

Max open files            131072               131072               files     

Max locked memory         51200000000          51200000000          bytes     

Max address space         unlimited            unlimited            bytes     

Max file locks            unlimited            unlimited            locks     

Max pending signals       256607               256607               signals   

Max msgqueue size         819200               819200               bytes     

Max nice priority         0                    0                    

Max realtime priority     0                    0                    

Max realtime timeout      unlimited            unlimited            us        

千万不要直接编辑这个文件.

限制问题解决了, 不会再报资源不足的错误.

> psql

psql (9.3.3)

Type "help" for help.

postgres=>

[参考]
1. http://serverfault.com/questions/201207/set-max-file-limit-on-a-running-process

2. http://blogs.kent.ac.uk/unseenit/2013/06/06/changing-ulimit-for-running-processes/

3. http://www.nowo.com/run-time-changes-ulimit/

4. http://blog.163.com/digoal@126/blog/static/16387704020145775247895/

时间: 2024-11-17 03:13:38

CentOS 6.x limits changed on a existing running process的相关文章

CentOS 6系统上借助docker快速搭建openvpn服务

一.安装docker 1.在CentOS6上安装docker除去编译之外还可以通过yum安装,不过是用EPEL源来安装 [root@li760-160 ~]# yum clean all [root@li760-160 ~]# yum makecache [root@li760-160 ~]# yum install -y epel-release 2.安装docker 和rzsz命令方便等下传输ovpn配置文件 [root@li760-160 ~]# yum install -y docker

cgroups

cgroups: Cgroups是control groups的缩写,是Linux内核提供的一种可以限制.记录.隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制.最初由google的工程师提出,后来被整合进Linux内核.Cgroups也是LXC为实现虚拟化所使用的资源管理手段,可以说没有cgroups就没有LXC. Cgroups最初的目标是为资源管理提供的一个统一的框架,既整合现有的cpuset等子系统,也为未来开发新的子系统提供接口.现

41.2. iptables - administration tools for packet filtering and NAT

Incoming Traffic | | V +----------+ |PREROUTING| +----------+ | raw | <--------------+ | mangle | | | nat | | +----------+ | | | | | Routing | +- Decision -+ | | | | | | | V V | Local Remote | Destination Destination | | | | | | | V V | +--------+ +-

(转)The Neural Network Zoo

  转自:http://www.asimovinstitute.org/neural-network-zoo/     THE NEURAL NETWORK ZOO POSTED ON SEPTEMBER 14, 2016 BY FJODOR VAN VEEN   With new neural network architectures popping up every now and then, it's hard to keep track of them all. Knowing all

Linux系统及应用问题分析排查工具

Linux服务器上经常遇到一些系统和应用上的问题,如何分析排查,需要利器,下面总结列表了一些常用工具.trace tool:最后也列举了最近hadoop社区在开发发展的分布式系统的trace tool. 概览: 引用linux-performance-analysis-and-tools中图片,说明这些tool试用层次位置 OS系统命令 系统信息(RHEL/Fedora) uname -a 或 cat /proc/version #print system information Linux h

TomCat 多虚拟站点配置

站点 在网络上找了许久,没有一个真正可以解决TomCat多虚拟站点的配置问题的,经过试验和参考官方网站资料,终于解决了这个问题. 参考资料:Apache Tomcat文档http://tomcat.apache.org/tomcat-5.0-doc/config/host.html 在文中有这么一段话: One or more Host elements are nested inside an Engine element. Inside the Host element, you can n

Microsoft User Interface Process Application Block 研究(3)

application 这篇文章研究的是如何在一个用户登录后获得用户的任务. 在Web界面中,用户如果通过验证就会转到welocme.aspx页面中,在这个页面中首先创建一个CartTask对象: Dim task As New CartTask(Page.User.Identity.Name) 这个对象的New(userlogon As String)方法中调用了静态方法StoreControllerBase.GetUserTaskId来获得任务的标示,这个任务标示是一个Guid类.在GetU

Linux中安装部署Docker管理工具Drone全攻略

  Drone 是一个构建在Docker之上的开源持续集成平台(CI).Drone 提供了一组预建的Docker映像,支持12+种语言和几乎所有主要的数据库.这意味着你不必花时间来安装软件和配置您的构建环境.当然,如果你需要一个高度定制的环境Drone提供了足够的灵活性来使用自定义Docker映像. Drone 完全采用Go语言开发.具有快速,高效的特点. 与其他的CI服务相比有什么不同? 1.Drone是开源的 2.Drone是构建在Docker之上 3.Drone 轻松托管在自己的基础架构之

DockerCon 2016 深度解读:在阿里云上体验Docker 1.12内置的编排能力

昨天才从DockerCon大会归来,阿里云容器服务团队将为大家奉献一系列深入学习的文章来帮助大家了解Docker 1.12的最新动态. 第一部分:在阿里云上体验Docker 1.12内置的编排能力 (本文) 第二部分:在阿里云上体验Docker 1.12的路由能力和容器应用分发部署 在DockerCon第一天的Keynote里面,Docker CTO Solomon Hykes宣布Docker将提供内置的编排(Orchestration)能力,从而能使得Docker Engine原生支持集群管理