Linux server上too many open files问题

之前测试遇到了"too many open files"的问题。ulimit -Hn 查了下发现server上最大open file数是4096。写了个简单的脚本检测发现进程创建的fd个数在不断增加,8分钟之后达到上限然后程序报错,其中绝大部分fd都是关于socket的。

在server上安装lsof查看当前进程打开文件,并定位出现频率最高的通信主机和端口。最后发现是一个Java程序bug,每两秒执行一次的方法会不断创建新的httpclient。修正bug后进程创建的fd数稳定在24。

lsof -i -a -p $PID 可以列出进程打开的所有network files。所用的简单检测脚本为

#!/bin/bash

cd /proc/$(ps -ef | grep appName | grep -v grep | awk ‘{print $2}‘)/fd

while true

do

ls -l | grep socket | wc -l

sleep 5

done 
时间: 2024-11-11 08:24:38

Linux server上too many open files问题的相关文章

How To mount/Browse Windows Shares【在linux{centos}上挂载、浏览window共享】

How to mount remote Windows shares Contents Required packages Basic method Better Method Even-better method Yet Another Even-better method OK, we live in the wonderful world of Linux. BUT, for many of us, having to deal with Windows is a fact of life

Cygwin下使用rsync备份至Linux server时的中文编码问题

14年6月10日 今天在备份数据又出了状况:所有文件名中含有非英文字符的文件都被从Linux server上删除,而当要重新拷贝Windows下该文件时,则显示错误: invalid or incomplete multibyte or wide character 看来是文件名编码出了问题.在Cygwin下查看locale,被设置成了[email protected].而原先设置的是什么也不记得了,但肯定是设置系统locale为Chinese又切换到English造成的.同时发现,date命令

SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)

本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创建RHEL系统(Create Red Hat Enterprise Linux System) 1.      前提准备 由于本文主要研究SQL Server 2017在Linux上的搭建方法,从Install SQL Server on Linux中得知当前SQL Server 2017 CTP

在Azure上实现Linux Server故障转移

要充分利用公有云的弹性扩展和高可用, 首先要在应用系统层面支持横向扩展(scale out),这个说起来很容易,或者说对新开发的应用系统而言已经成为标配.但是对已有的.老旧的应用系统来说,这就比较困难了,不是每个应用系统都能实现/支持横向扩展的.从客户的角度来说,基本上很难接受为了把应用系统迁移到公有云上而去额外投入修改应用系统代码.虽然我们都心知肚明,本质上这是在“偿还技术债”,修改应用系统代码也是为了更好地利用公有云的优势... 对于应用系统的横向扩展而言,“状态”是最大的拦路虎,要支持横向

在 Linux 实例上自动安装并运行 VNC Server

原文网址:https://help.aliyun.com/knowledge_detail/41181.html?spm=5176.8208715.110.11.4c184ae8mlC7Yy 您可以使用本文提供的脚本在Linux实例上自动安装并运行VNC Server,实现远程图形化管理Linux服务器.目前,该脚本仅适用于CentOS实例,会在CentOS实例中安装GNOME桌面环境. VNC Server脚本 适用镜像:目前仅适用于CentOS镜像. 使用方法:以root身份执行命令 bas

linux服务器上搭建gitolite实现对git server的版本库的权限控制

一.环境介绍: 1.1Git账户管理机器manageip:10.0.0.56 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] ~]# hostname manage [[email protected] ~]# tail -2 /etc/hosts 10.0.0.56 manage 10.0.0.11 git-server 1.2.git远程版本库git-se

在Oracle Linux 7上通过官方Repo在线安装SQL Server 2017

挂载数据盘 #vgdispaly的Total PE 安装SQL Server服务端 1.下载SQL Server Red Hat Repository配置文件: curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo 2.安装SQL Server实例 yum install -y mssql-server 3.运行mssql-con

Linux操作系统上安装JDK

步骤1:下载JDK 1.7 安装包 JDK 1.7 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 在下载过程中,需要注意两点: 1:注意操作系统版本,以及32位还是64位操作系统.如下所示,Linux 分x86.x64两种, Product / File Description File Size Download Linux x86 80.38 MB jdk-7u

windows平台是上的sublime编辑远程linux平台上的文件

sublime是个跨平台的强大的代码编辑工具,不多说. 想使用sublime完成linux平台下django站点的代码编辑工作以提高效率(原来使用linux下的vim效率较低,适合编辑一些小脚本). 下载linux平台下的Sublime_Text_2.0.2_x64.tar.bz2(http://www.sublimetext.com/) 解压使用: tar -xjvf Sublime_Text_2.0.2_x64.tar.bz2 cd Sublime\ Text\ 2/ 执行 ./sublim