`
nigelzeng
  • 浏览: 606575 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

can't identify protocol问题的定位和解决

阅读更多

在观摩了一个关于性能问题排查的PPT之后试着用lsof命令来列举linux系统打开的文件,

然后发现出现了很多“ can't identify protocol ” 的信息:

 

udevd 3117 root 989u sock 0,4 84579 can't identify protocol
udevd 3117 root 990u sock 0,4 84632 can't identify protocol
udevd 3117 root 991u sock 0,4 84757 can't identify protocol
udevd 3117 root 992u sock 0,4 84836 can't identify protocol
udevd 3117 root 993u sock 0,4 84899 can't identify protocol
udevd 3117 root 994u sock 0,4 85018 can't identify protocol
udevd 3117 root 995u sock 0,4 85135 can't identify protocol
udevd 3117 root 996u sock 0,4 85172 can't identify protocol
udevd 3117 root 997u sock 0,4 85213 can't identify protocol
udevd 3117 root 998u sock 0,4 85318 can't identify protocol

 

 

可以看到这都是由于3117进程打印出来的,于是使用strace命令追中该进程号:

 

[root@localhost ~]# strace -p 3117
Process 3117 attached - interrupt to quit
select(0, [], [], NULL, {0, 168000}) = 0 (Timeout)
time([1349686960]) = 1349686960
select(0, [], [], NULL, {1, 0}) = 0 (Timeout)
time([1349686961]) = 1349686961
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = -1 EMFILE (Too many open files)
select(0, [], [], NULL, {1, 0}) = 0 (Timeout)
time([1349686962]) = 1349686962
select(0, [], [], NULL, {1, 0}) = 0 (Timeout)
time([1349686963]) = 1349686963
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = -1 EMFILE (Too many open files)
select(0, [], [], NULL, {1, 0}) = 0 (Timeout)
time([1349686964]) = 1349686964
select(0, [], [], NULL, {1, 0}) = 0 (Timeout)
time([1349686965]) = 1349686965
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = -1 EMFILE (Too many open files)
 

 

于是追踪到“Too many open files”错误。

到这里,就很明白了,是进程打开文件句柄的个数达到了linux的限制。

 

而这种限制分为系统层面的和用户层面的:

系统层面的在:/proc/sys/fs/file-max里设置

 

[root@localhost ~]# cat /proc/sys/fs/file-max
1602508
 

 

用户层面的限制在:/etc/security/limits.conf里设定

使用 ulimit -a 查看系统允许单个进程打开的最大文件数:

 

[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 278528
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

 

注意“open files (-n) 1024” 这一行,系统只允许每个非root用户(运行不是系统级别的程序一般都是非root用户来启动的)打开1024个文件。

 

 

既然问题找到,那就只要把这个值改大就好了,可以使用这两种方法:

1、临时修改

· ulimit -n 131072(重启无效)

· 在/etc/rc/rc.local里加入ulimit -n 131072

 

2、永久修改

在/etc/security/limits.conf文件里加入以下内容,重启生效:

* soft nofile 131072
* hard nofile 131072

 

你也可以零时修改和永久修改一起进行,这样重启系统之后还能保持一样的open files限制。

 

—— EOF ——

 

分享到:
评论

相关推荐

    libero-Identify详细教程-actel

    除了上述系统要求外,还需要满足以下软硬件条件才能顺利完成Identify的安装和使用: - **开发环境**:需要预先安装Actel Libero IDE v8.2及以上版本的开发环境。 - **许可**:必须拥有有效的Libero、Synplify和...

    自己动手实现Arcmap中的Identify功能

    通过调试和修改这些代码,你可以定制Identify功能,例如增加筛选条件、优化查询性能或改变结果展示方式。 总的来说,实现ArcMap的Identify功能涉及到对GIS原理的理解,对ArcObjects或ArcPy的熟练掌握,以及一定的UI...

    Laravel开发-identify

    "Laravel开发-identify"是与Laravel框架相关的扩展,特别设计用于识别和检测用户的浏览器、设备、操作系统和语言。这个功能对于个性化用户体验、数据分析、安全性和其他Web应用优化策略至关重要。 首先,我们要理解...

    如何正确使用 @Qualifier 注解来解决多个同类型 Bean 注入的问题

    使用 @Qualifier 注解是解决 Spring 中多个同类型 Bean 注入冲突的一...本文将详细介绍 @Qualifier 注解的作用、使用方法以及示例场景,以帮助读者了解如何正确使用 @Qualifier 注解来解决多个同类型 Bean 注入的问题。

    synplify9.6.2 with identify3.0.2

    - **调试工具**:提供强大的调试功能,帮助用户快速定位并解决问题。 #### 3. 应用场景 - **消费电子**:用于智能手机、平板电脑等产品的芯片设计。 - **汽车电子**:应用于车载信息娱乐系统、安全控制系统等。 - *...

    网络协议攻击

    25network protocol in your own code so you can test the protocol’s behavior to find security weaknesses. Chapter 9: The Root Causes of Vulnerabilities This chapter describes common security ...

    自制ArcEngine中的iDentify工具

    ### 自制ArcEngine中的iDentify工具 #### 背景介绍 在地理信息系统(GIS)领域,ArcEngine是Esri公司开发的一款强大的GIS开发平台,它提供了丰富的API供开发者进行二次开发,以满足各种特定的需求。其中,iDentify...

    identify_demo.rar

    其中,`identify`命令是Libero工具中的一个重要功能,它主要用于识别连接到系统的FPGA芯片型号和相关信息。本文将深入探讨`identify`命令的使用方法以及其在FPGA设计流程中的作用。 首先,`identify`命令的最基本...

    AE+C#Identify功能实现.pdf

    在本篇文档中,我们探讨的是如何在C#环境下结合Adobe After Effects(AE)实现 Identify 功能,这通常指的是在地图应用中识别和查询特定地理信息的功能。此功能的实现涉及到了ArcGIS组件,这是一个强大的地理信息...

    arcengine+C# identify功能实现.txt

    内部自带一个属性查看窗口,使用树结构对当前位置下所有图层对应的元素信息进行展示。需要修改的部分:缓冲区域范围。

    使用identify获取图片的水平分辨率和垂直分辨率

    ### 使用 Identify 获取图片的水平分辨率和垂直分辨率 在日常工作中,我们经常需要处理各种图像文件,其中一项重要的任务就是获取图像的基本属性,如分辨率。在众多图像处理工具中,ImageMagick 提供了一个非常强大...

    AE开发,连接SDE,Identify

    在GIS应用中,GPS(全球定位系统)数据常用于定位和跟踪移动设备,或者将GPS轨迹叠加到地图上。开发者可能需要解析GPS数据格式(如NMEA),将其转换为GIS坐标,然后将这些位置信息显示在地图上,或者与其他GIS数据...

    Python库 | identify-1.5.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:identify-1.5.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    杨桦-问题解决及8D分析之8D管理中解决问题的步骤(下)(ppt 48页).pptx

    以下是对8D管理法中解决问题步骤的详细解释: 1. D1 - 团队成立:建立一个跨部门的团队,负责识别、分析和解决特定问题。 2. D2 - 问题定义:清晰、准确地定义问题,包括问题的现象、影响范围、严重程度等。 3. ...

    解决idea 拉取代码出现的 “ Сannot Run Git Cannot identify version of git executable: no response“的问题

    在使用IntelliJ IDEA(简称Idea)进行Git操作时,有时可能会遇到“Сannot Run Git Cannot identify version of git executable:...记得在解决问题的过程中,及时查阅官方文档和社区资源,以便获取更详细的帮助和支持。

    Android代码-OCR_identify

    OCR 身份证识别 ...打开百度云,创建应用,得到 AppKey secretKey,根据提示下载 jar 包和 lib 包,并放到项目中 Step 4. 初始化 OCR.getInstance().initAccessTokenWithAkSk(new OnResultListener

    car-identify.rar

    1. 图像预处理:首先,摄像头捕获的原始图像通常包含噪声和光照不均等问题。预处理阶段主要包括图像去噪(如使用中值滤波器)、灰度化、直方图均衡化等操作,以增强图像质量,便于后续处理。 2. 车牌定位:定位是...

    无线网络上行干扰排查规范及典型案例.doc

    无线网络上行干扰排查是指通过对无线网络的检测和分析,identify 和解决干扰问题,以确保无线网络的稳定运行和高效运作。上行干扰排查不仅可以解决当前的干扰问题,还可以预防未来可能出现的干扰问题。 二、干扰...

    OPTICS:Ordering Points To Identify the Clustering Structure

    为了解决这一问题,一种名为OPTICS(Ordering Points To Identify the Clustering Structure)的新算法被引入。 #### OPTICS算法原理与特点 **1. 算法目标** OPTICS的目标不是直接生成数据集的聚类划分,而是创建...

    IDcard_Identify.zip

    总的来说,"IDcard_Identify.zip"项目通过LabVIEW实现了一套完整的OCR身份证识别解决方案,对于身份证信息的自动化处理有着广泛的应用前景,如身份验证、信息录入等场景。同时,其可训练性也使得该系统具有很好的...

Global site tag (gtag.js) - Google Analytics