精华内容
下载资源
问答
  • linux常见报错种类

    2021-02-12 21:24:50
    作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯。每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着的继续努力...

    说起来日常的故障,其实,首先应该相到的就是:“备份”。毕竟再怎么牢固的系统或硬件都会有故障的时候,所以,备份放第一位

    作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯。每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着的继续努力,从中也积累了更多的经验,这就是实践给予我们的丰厚回报。

    常见问题解决集锦
    1.shell脚本不执行
    问题:
    某天研发某同事找我说帮他看看他写的shell脚本,死活不执行,报错。我看了下,脚本很简单,也没有常规性的错误,报“:badinterpreter:Nosuchfileordirectory”错。

    看这错,我就问他是不是在windows下编写的脚本,然后在上传到linux服务器的。

    原因:
    在DOS/windows里,文本文件的换行符为rn,而在nix系统里则为n,所以DOS/Windows里编辑过的文本文件到了nix里,每一行都多了个^M。

    解决:
    1)重新在linux下编写脚本;
    2)vi:%s/r//g:%s/M//g(M输入用Ctrl+v,Ctrl+m)
    附:sh-x脚本文件名,可以单步执行并回显结果,有助于排查复杂脚本问题。

    2.crontab输出结果控制
    问题:
    /var/spool/clientmqueue目录占用空间超过100G

    原因:
    cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了/var/spool/clientmqueue目录下的那些文件,日积月累可能撑破磁盘

    解决:
    1)直接手动删除:ls|xargsrm-f;
    2)彻底解决:在cron的自动执行语句后加上**>/dev/2>&1**

    3.telnet很慢/ssh很慢
    问题:
    某天研发某同事说10.50访问10.52memcached服务异常,让我们检查下看网络/服务/系统是否有异常。检查发现系统正常,服务正常,10.50ping10.52也正常,但10.50telnet10.52很慢。同时发现该机器的namesever是不起作用的。

    原因:
    becauseyourPCdoesn’tdoareverseDNSlookuponyourIPthen…whenyoutelnet/ftpintoyourlinuxbox,it’lldoadnslookuponyou。

    解决:
    1)修改/etc/hosts使hostname和ip对应;
    2)在/etc/resolv.conf注释掉nameserver或者找一个“活的”nameserver。

    4.Read-onlyfilesystem
    问题:
    同事在mysql里建表建不成功,提示如下:
    mysql>createtablewosontest(colddname1char(1));
    ERROR1005(HY000):Can’t create table‘wosontest’(errno:30)
    经检查mysql用户权限以及相关目录权限没问题;用perror30提示信息为:OSerrorcode30:Read-onlyfilesystem

    可能原因:
    1)文件系统损坏;
    2)磁盘又坏道;
    3)fstab文件配置错误,如分区格式错误错误(将ntfs写成了fat)、配置指令拼写错误等。

    解决:
    1)由于是测试机,重启机器后恢复;
    2)网上说用mount可解决。

    5.文件删了磁盘空间没释放
    问题:
    某天发现某台机器df-h已用磁盘空间为90G,而du-sh/*显示所有使用空间加起来才30G,囧。

    原因:
    可能某人直接用rm删除某个正在写的文件,导致文件删了但磁盘空间没释放的问题

    解决:
    1)最简单重启系统或者重启相关服务。
    2)干掉进程

    /usr/sbin/lsof|grepdeleted
    ora25575data33uREG65,654294983680/oradata/DATAPRE/UNDOTBS009.dbf(deleted)
    从lsof的输出中,我们可以发现pid为25575的进程持有着以文件描述号(fd)为33打开的文件/oradata/DATAPRE/UNDOTBS009.dbf。

    在我们找到了这个文件之后可以通过结束进程的方式来释放被占用的空间:echo>/proc/25575/fd/33
    3)删除正在写的文件一般用cat/dev/null>file

    6.find文件提升性能
    问题:
    在tmp目录下有大量包含picture_*的临时文件,每天晚上2:30对一天前的文件进行清理。之前在crontab下跑如下脚本,但是发现脚本效率很低,每次执行时负载猛涨,影响到其他服务。

    #!/bin/sh
    find/tmp-name“picture_*”-mtime+1-execrm-f{};
    原因:
    目录下有大量文件,用find很耗资源。

    解决:

    #!/bin/sh
    cd/tmp
    time=date-d“2dayago”“+%b%d”
    ls-l|grep“picture”|grep“KaTeX parse error: Expected '}', got 'EOF' at end of input: …ime”|awk‘{printNF}’|xargsrm-rf
    7.获取不了网关mac地址
    问题:
    从2.14到3.65(映射地址2.141)网络不通,但是从3端的其他机器到3.65网络OK。

    原因:

    #arp
    AddressHWtypeHWaddressFlagsMaskIface
    192.168.3.254etherincompletCMbond0
    表面现象是机器自动获取不了网关MAC地址,网络工程师说是网络设备的问题,具体不清。
    解决:
    arp绑定,arp-ibond0-s192.168.3.25400:00:5e:00:01:64

    8.http服务无法启动一例
    问题:

    某天研发某同事说网站前端环境http无法启动,我上去看了下。报如下错:

    /etc/init.d/httpdstart
    Startinghttpd:[SatJan2917:49:002011][warn]moduleantibot_moduleisalreadyloaded,skipping
    Useproxyforwardasremoteip:true.
    Antibotexcludepattern:.*.[(js|css|jpg|gif|png)]
    Antibotseedcheckpattern:login
    (98)Addressalreadyinuse:make_sock:couldnotbindtoaddress[::]:7080
    (98)Addressalreadyinuse:make_sock:couldnotbindtoaddress0.0.0.0:7080
    nolisteningsocketsavailable,shuttingdown
    Unabletoopenlog[FAILED]
    原因:

    1)端口被占用:表面看是7080端口被占用,于是netstat-npl|grep7080看了下发现7080没有占用;
    2)在配置文件中重复写了端口,如果在以下两个文件同时写了Listen7080

    /etc/httpd/conf/http.conf
    /etc/httpd/conf.d/t.10086.cn.conf
    解决:
    注释掉/etc/httpd/conf.d/t.10086.cn.conf的Listen7080,重启,OK。

    9.toomanyopenfile
    问题:
    报toomanyopenfile错误
    产生原因
    too many open files是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。
    引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少:
    在这里插入图片描述

    解决:
    终极解决方案
    open files那一行就代表系统目前允许单个进程打开的最大句柄数,这里是1024。
    使用命令lsof -p 进程id可以查看单个进程所有打开的文件详情,使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件,如果文件数过多使用lsof -p 进程id命令无法完全查看的话,可以使用lsof -p 进程id > openfiles.log将执行结果内容输出到日志文件中查看。

    二、解决方法
    1、增大允许打开的文件数——命令方式
    ulimit -n 2048
    这样就可以把当前用户的最大允许打开文件数量设置为2048了,但这种设置方法在重启后会还原为默认值。
    ulimit -n命令非root用户只能设置到4096。
    想要设置到更大需要sudo权限或者root用户。

    2、增大允许打开的文件数——修改系统配置文件
    vim /etc/security/limits.conf
    #在最后加入

    • soft nofile 4096

    • hard nofile 4096
      或者只加入

      • nofile 8192

    最前的 * 表示所有用户,可根据需要设置某一用户,例如

    roy soft nofile 8192
    roy hard nofile 8192
    注意”nofile”项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用”-“字符设定, 则hard和soft设定会同时被设定。

    3、检查程序问题
    如果你对你的程序有一定的解的话,应该对程序打开文件数(链接数)上限有一定的估算,如果感觉数字异常,请使用第一步的lsof -p 进程id > openfiles.log命令,获得当前占用句柄的全部详情进行分析
    最后重启机器或者执行:

    ulimit-u655345 && ulimit-n65535
    10.ibdata1和mysql-bin致磁盘空间问题
    10.问题:
    2.51磁盘空间报警,经查发现ibdata1和mysql-bin日志占用空间太多(其中ibdata1超过120G,mysql-bin超过80G)

    原因:
    bdata1是存储格式,在INNODB类型数据状态下,ibdata1用来存储文件的数据和索引,而库名的文件夹里的那些表文件只是结构而已。

    innodb存储引擎有两种表空间的管理方式,分别是:
    1)共享表空间(可拆分为多个小的表空间文件),这个是我们目前多数数据库使用的方法;
    2)独立表空间,每一个表有一个独立的表空间(磁盘文件)

    对于两种管理方式,各有优劣,具体如下:
    ①共享表空间:
    优点:
    可以将表空间分成多个文件存放到不同的磁盘上(表空间文件大小不受表大小的限制,一个表可以分布在不同步的文件上)

    缺点:
    所有数据和索引存放在一个文件中,则随着数据的增加,将会有一个很大的文件,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样如果对于一个表做了大量删除操作后表空间中将有大量空隙。

    对于共享表空间管理的方式下,一旦表空间被分配,就不能再回缩了。当出现临时建索引或是创建一个临时表的操作表空间扩大后,就是删除相关的表也没办法回缩那部分空间了。

    ②独立表空间:
    在配置文件(my.cnf)中设置:innodb_file_per_table

    特点:
    每个表都有自已独立的表空间;每个表的数据和索引都会存在自已的表空间中。

    优点:
    表空间对应的磁盘空间可以被收回(Droptable操作自动回收表空间,如果对于删除大量数据后的表可以通过:altertabletbl_nameengine=innodb;回缩不用的空间。

    缺点:
    如果单表增加过大,如超过100G,性能也会受到影响。在这种情况下,如果使用共享表空间可以把文件分开,但有同样有一个问题,如果访问的范围过大同样会访问多个文件,一样会比较慢。

    如果使用独立表空间,可以考虑使用分区表的方法,在一定程度上缓解问题。此外,当启用独立表空间模式时,需要合理调整innodb_open_files参数的设置。

    解决:
    1)ibdata1数据太大:只能通过dump,导出建库的sql语句,再重建的方法。
    2)mysql-binLog太大:

    ①手动删除:
    删除某个日志:

    mysql>PURGEMASTERLOGSTO‘mysql-bin.010′;
    删除某天前的日志:

    mysql>PURGEMASTERLOGSBEFORE’2010-12-2213:00:00′;
    ②在/etc/my.cnf里设置只保存N天的bin-log日志
    expire_logs_days=30//BinaryLog自动删除的天数

    展开全文
  • qmake里添加 pro : LIBS += -luser32 因为需要用到win32 api Findwinow获取窗口句柄: 在嵌入进程的实现cpp中加win32 api函数的头文件 #include <Windows.h> 在QMainWindow类中添加嵌入实现代码: ...

    外部进程嵌入到Qt界面是非常简单和便捷的

    但是Qt里没有配置好环境,就不能成功嵌入,这问题网上有很多例程,但是没有讲配置,导致写了很多例程都不能成功。

    配置步骤:

    1. qmake里添加 pro : LIBS += -luser32 因为需要用到win32 api Findwinow获取窗口句柄:
      在这里插入图片描述
    2. 在嵌入进程的实现cpp中加win32 api函数的头文件 #include <Windows.h>
    3. 在QMainWindow类中添加嵌入实现代码:
      在这里插入图片描述
    展开全文
  •  设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:  ulimit -u 10000  对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,  最好通过使用 ulimit -n xx 修改每...

    1、本质解决方案按照oracle的安装脚本中以下几项文件进行相应配置:

    cp /etc/security/limits.conf /etc/security/limits.conf.bak

    echo "oracle soft nproc 2047" >>/etc/security/limits.conf

    echo "oracle hard nproc 16384" >>/etc/security/limits.conf

    echo "oracle soft nofile 1024" >>/etc/security/limits.conf

    echo "oracle hard nofile 65536" >>/etc/security/limits.conf

    cp /etc/pam.d/login /etc/pam.d/login.bak

    echo "session required /lib/security/pam_limits.so" >>/etc/pam.d/login

    echo "session required pam_limits.so" >>/etc/pam.d/login

    cp /etc/profile /etc/profile.bak

    echo 'if [ $USER = "oracle" ]; then' >>  /etc/profile

    echo 'if [ $SHELL = "/bin/ksh" ]; then' >> /etc/profile

    echo 'ulimit -p 16384' >> /etc/profile

    echo 'ulimit -n 65536' >> /etc/profile

    echo 'else' >> /etc/profile

    echo 'ulimit -u 16384 -n 65536' >> /etc/profile

    echo 'fi' >> /etc/profile

    echo 'fi' >> /etc/profile

    cp /etc/sysctl.conf /etc/sysctl.conf.bak

    echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf

    echo "fs.file-max = 6815744" >> /etc/sysctl.conf

    echo "kernel.shmall = 2097152" >> /etc/sysctl.conf

    echo "kernel.shmmax = 4294967295" >> /etc/sysctl.conf

    echo "kernel.shmmni = 4096" >> /etc/sysctl.conf

    echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf

    echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf

    echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf

    echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf

    echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf

    echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf

    echo "net.ipv4.tcp_wmem = 262144 262144 262144" >> /etc/sysctl.conf

    echo "net.ipv4.tcp_rmem = 4194304 4194304 4194304" >> /etc/sysctl.conf

    sysctl -p

    2、临时解决方案:

    [root@zytest04 ~]# ulimit -a

    core file size          (blocks, -c) 0

    data seg size           (kbytes, -d) unlimited

    scheduling priority             (-e) 0

    file size               (blocks, -f) unlimited

    pending signals                 (-i) 46418

    max locked memory       (kbytes, -l) 64

    max memory size         (kbytes, -m) unlimited

    open files                      (-n) 1024

    pipe size            (512 bytes, -p) 8

    POSIX message queues     (bytes, -q) 819200

    real-time priority              (-r) 0

    stack size              (kbytes, -s) 10240

    cpu time               (seconds, -t) unlimited

    max user processes              (-u) 46418

    virtual memory          (kbytes, -v) unlimited

    file locks                      (-x) unlimited

    [root@zytest04 ~]# ulimit -n 4096

    [root@zytest04 ~]# ulimit -a

    core file size          (blocks, -c) 0

    data seg size           (kbytes, -d) unlimited

    scheduling priority             (-e) 0

    file size               (blocks, -f) unlimited

    pending signals                 (-i) 46418

    max locked memory       (kbytes, -l) 64

    max memory size         (kbytes, -m) unlimited

    open files                      (-n) 4096

    pipe size            (512 bytes, -p) 8

    POSIX message queues     (bytes, -q) 819200

    real-time priority              (-r) 0

    stack size              (kbytes, -s) 10240

    cpu time               (seconds, -t) unlimited

    max user processes              (-u) 46418

    virtual memory          (kbytes, -v) unlimited

    file locks                      (-x) unlimited

    3、转自网络文档

    第一部分:(主要是命令,查看最大打开限制数量,不能解决根本问题)

    在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。

    对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:

    00001. lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more   

    在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:

    00001. # lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more   

    00002.     131 24204  

    00003.      57 24244  

    00004.      57 24231  

    00005.      56 24264  

    其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。

    00001. ps -aef|grep 24204  

    00002. mysql    24204 24162 99 16:15 ?        00:24:25 /usr/sbin/mysqld  

    哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。

    但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:

    00001. ulimit -HSn 4096  

    以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。(findsun提出的办法比较合理)

    =================================================================================

    Too many open files经常在使用linux的时候出现,大多数情况是您的程序没有正常关闭一些资源引起的,所以出现这种情况,请检查io读写,socket通讯等是否正常关闭。
    如果检查程序没有问题,那就有可能是linux默认的open files值太小,不能满足当前程序默认值的要求,比如数据库连接池的个数,tomcat请求连接的个数等。。。
    查看当前系统open files的默认值,可执行:

    Java代码 wps5BC6.tmp

    00001. [root@pororo script]# ulimit -a   

    00002. core file size           (blocks, -c) 0

    00003. data seg size            (kbytes, -d) unlimited   

    00004. scheduling priority              (-e) 0

    00005. file size                (blocks, -f) unlimited   

    00006. pending signals                  (-i) 128161

    00007. max locked memory        (kbytes, -l) 32

    00008. max memory size          (kbytes, -m) unlimited   

    00009. open files                       (-n) 800000

    00010. pipe size             (512 bytes, -p) 8

    00011. POSIX message queues      (bytes, -q) 819200

    00012. real-time priority               (-r) 0

    00013. stack size               (kbytes, -s) 10240

    00014. cpu time                (seconds, -t) unlimited   

    00015. max user processes               (-u) 128161

    00016. virtual memory           (kbytes, -v) unlimited   

    00017. file locks                       (-x) unlimited  

    00018. ==========================================================================

    00019. 第二部分:(解决的真正方法)

    功能说明:控制shell程序的资源。

    语  法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大 小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大 小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

    补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。

    参  数:
    -a  显示目前资源限制的设定。
    -c <core文件上限>  设定core文件的最大值,单位为区块。
    -d <数据节区大小>  程序数据节区的最大值,单位为KB。
    -f <文件大小>  shell所能建立的最大文件,单位为区块。
    -H  设定资源的硬性限制,也就是管理员所设下的限制。
    -m <内存大小>  指定可使用内存的上限,单位为KB。
    -n <文件数目>  指定同一时间最多可开启的文件数。
    -p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。
    -s <堆叠大小>  指定堆叠的上限,单位为KB。
    -S  设定资源的弹性限制。
    -t <CPU时间>  指定CPU使用时间的上限,单位为秒。
    -u <程序数目>  用户最多可开启的程序数目。
    -v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。

    ulimit -a 用来显示当前的各种用户进程限制。
        Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
        设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
         ulimit -u 10000
         对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
         最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
         ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
         其他建议设置成无限制(unlimited)的一些重要设置是:
         数据段长度:ulimit -d unlimited
         最大内存大小:ulimit -m unlimited
         堆栈大小:ulimit -s unlimited
         CPU 时间:ulimit -t unlimited
         虚拟内存:ulimit -v unlimited
    我们公司服务器需要调整ulimit的stack size 参数调整为unlimited 无限,使用ulimit -s unlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。
    PS:如果你碰到类似的错误提示
    ulimit: max user processes: cannot modify limit: 不允许的操作
    ulimit: open files: cannot modify limit: 不允许的操作
    为啥root用户是可以的?普通用户又会遇到这样的问题?
    看一下/etc/security/limits.conf大概就会明白。
    linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。
    超出上限的修改就会出“不允许的操作”这样的错误。
    在limits.conf加上
    *        soft    noproc  10240
    *        hard    noproc  10240
    *        soft    nofile  10240
    *        hard    nofile  10240
    就是限制了任意用户的最大线程数和文件数为10240。

    展开全文
  • linux 句柄数过高的排查方法

    万次阅读 2018-07-12 08:18:43
    背景:做linux系统上的后端代码开发,偶尔会碰到后台报错:too many file open XXXX ,紧跟着是socket open timeout 。这种情况大部分是因为linux 文件句柄数满掉引起的。排查方法如下:1、linux操作系统默认的...

    背景:做linux系统上的后端代码开发,偶尔会碰到后台报错:too many file open  XXXX  ,紧跟着是socket open timeout  。这种情况大部分是因为linux 文件句柄数满掉引起的。排查方法如下:


    1、linux操作系统默认的句柄数为1024,windows默认的句柄数为6万。所以linux操作系统更容易出现句柄数不够用的情况。但是1024的句柄数在大部分情况下也是够用的,除非这台linux是类似:日志服务器、监控服务器等提供服务,并且被大量IP链接的才需要扩大句柄数(改linux系统参数+重启linux)。

    2、当出现linux句柄数满的时候,使用如下命令查询句柄数说被哪个进程占了。如下:

    lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

    image.png


    然后运行:ps -ef|grep 12281     (其中12281换为上一个步骤查询到的pid)


    image.png


    如果是java系统的,则可以使用jdk自带的线程导出工具,把全部的线程导出:

    jstack -l 12281 >> /usr/local/Client/log20180116.log     (其中12281换为实际的pid)


    然后用记事本打开这个文件,看看哪个线程数最高+结合实际业务情况判断是哪段代码出问题了 




    展开全文
  • 这可能是因为链接是国外的镜像源,导致链接失败,可以...可以看到里面很多段落的文件,按i进入编辑模式,把里面的文件全部删除,然后把作为镜像源的链接复制进去,然后按esc结束编辑模式,这时候句柄会来到输入框最...
  • linux句柄数过高排查及调整

    千次阅读 2020-06-04 08:46:36
    linux系统上的后端代码开发,偶尔会碰到后台报错:too many file open XXXX ,紧跟着是socket open timeout 。这种情况大部分是因为linux 文件句柄数满掉引起的。linux操作系统默认的句柄数为1024,windows默认的...
  • 文件句柄 文章目录文件句柄查看用户级别(nofile)单个进程级别(nr_...关于什么是文件句柄,这里不做讨论,其实linux中没有文件句柄,叫做文件描述符fd 超过最大句柄限制,报错:java.io.IOException: Too many open
  • linux报错too many files

    2015-02-27 14:17:00
    原因: linux是以文件为基础单位的, 每个客户端访问都会打开对应的文件句柄, 而默认的最大同时打开文件数是有限的。 使用ulimit -a查看, 可以看到open files是1024。 解决办法: 1. ulimit -n ...
  • 现网运行的oracle数据库,有一天突然报错(alert日志):too many open files in system,需要对操作系统允许句柄数进行扩充,查阅了很多资料,修改点主要集中在如下几个文件: 1./proc/sys/fs/file-max 2./etc/...
  • 解决方案:  当前问题主要是因为gulp的watch需要监听很多文件的改动,但是fedora、ubuntu系统的文件句柄其实是有限制的,因此可以使用以下命令:  echo fs.inotify.max_user_... 对于以上Linux下gulp报错E
  • linux通过虚拟文件系统管理各种硬件资源,包括sock资源,例如创建一个file,创建一个socket,然后将file和socket相互之间建立引用,接着将file挂载到文件系统里,并将file放入进程pcb的flie数组的一个槽位,并将槽...
  • 1. 添加ulimit -HSn 655350 到/etc/profile ...修改linux文件句柄数 分类:LINUX 2010-09-08 00:06:51 在Linux下,我们使用ulimit -n命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算...
  • 转自:http://www.linuxdiyf.com/viewarticle.php?id=45164在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现(针对文件进行转换)一、利用iconv函数族进行编码转换iconv函数族的...
  • 出现这个报错,意思是指当前...1,查看linux内核下打开进程级文件句柄数量参数以及更改参数: [root@21yunwei ~]$ulimit -n 1024 这个值明显是过小,系统部署的某个服务如打开文件数量稍大,那么就非常容易报错。内...
  • linux文件句柄不足导致服务器僵死

    千次阅读 2011-01-14 22:06:00
    linux文件句柄,java与文件句柄
  • Linux系统默认的最大文件句柄数(打开文件数,Linux下一切皆文件,这里仅做类比句柄描述),系统默认是1024。用ulimit -n进行查看。当存在句柄泄露没有释放时,系统会报错:Too many open files。   查看进程打开...
  • 当一个应用程序正在写一个大文件的时候,我们RM或者MV了这个文件(UNIX是允许这么干的,WINDOWS在这一点上傻有傻福),应用程序会占有句柄,并根据句柄所指磁盘位置直接写磁盘,而不会检查该文件是否被删除。...
  • linux中单个进程最多允许打开的文件句柄数(包括socket连接数)是有限制的,当大于这个系统限制时,程序会抛出大量的无法打开文件的报错。 查看的命令是: ulimit -a 查看系统的文件相关限制 其中open files表示...
  • linux下scoket句柄查询

    2015-01-28 18:18:01
    关于linux下scoket打开超过设置的参数,并且网站应用打开比较慢,和报错 too mary open files错误时。首先查询当前服务器的句柄数量#lsof -n |awk '{print $2}'|sort|uniq -c|sort -nr|more前列是句柄数量 后列是...
  • 修改linux的最大文件句柄数限制 系统默认是1024,对于一般的应用(apache,系统进程)完全足够使用,但是对于mysql、java等单进程处理大量请求的应用就比较紧张。 当单个进程打开的文件句柄数梁超过系统定义的值,...
  • * hard nofile 65536 #限制单个进程最大文件句柄数(到达此限制时系统报错)  4)修改文件:/etc/sysctl.conf。在文件中添加: fs.file-max=655350 #限制整个系统最大文件句柄数  运行命令:/sbin/...
  • 一、修改文件句柄数 查看当前大小 ulimit -a 临时修改 ulimit -n 4096 永久修改 vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 二、调整vm.max_map_count的大小 报错“max ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,324
精华内容 3,729
关键字:

linux句柄报错

linux 订阅