`

(转)MySQL相关的一个异常错误

阅读更多
前几天, 在管理系统的时候遇到一个奇怪的问题, 今天才有机会安装好MySQL环境来重现此问题,由于不是最原始的环境, 所以未必能够完全重现, 我只能努力重现关键问题了.. 我觉得此问题有点特别, 故在此大概的回想下当时的情景..

工作时, 执行了一个su – mysql 的命令, 遇到了下面这样一个错误..

view sourceprint?1 [root@dbmain ~]# su - mysql 

2 su: cannot set user id: Resource temporarily unavailable

这是一个Shell中由于资源不足引起的问题, 当时下意识的先运行ulimit,看看ulimit的基本限制.

view sourceprint?01 [root@dbmain ~]# ulimit -a 

02 core file size          (blocks, -c) 0 

03 data seg size           (kbytes, -d) unlimited 

04 scheduling priority             (-e) 0 

05 file size               (blocks, -f) unlimited 

06 pending signals                 (-i) 25600 

07 max locked memory       (kbytes, -l) 32 

08 max memory size         (kbytes, -m) unlimited 

09 open files                      (-n) 1024 

10 pipe size            (512 bytes, -p) 8 

11 POSIX message queues     (bytes, -q) 819200 

12 real-time priority              (-r) 0 

13 stack size              (kbytes, -s) 10240 

14 cpu time               (seconds, -t) unlimited 

15 max user processes              (-u) 25600 

16 virtual memory          (kbytes, -v) unlimited 

17 file locks                      (-x) unlimited

又看了看,/etc/security/limits.conf

view sourceprint?01 oracle              soft    nproc   2047 

02 oracle              hard    nproc   16384 

03 oracle              soft    nofile  1024 

04 oracle              hard    nofile  65536 

05 oracle              soft    memlock        12582912 

06 oracle              hard   memlock        12582912 

07   

08 grid              soft    nproc   2047 

09 grid              hard    nproc   16384 

10 grid              soft    nofile  1024 

11 grid              hard    nofile  65536 

12 grid              soft    memlock        12582912 

13 grid              hard   memlock        12582912 

14   

15 mysql             soft    nproc  500 

16 mysql             hard    nproc  500 

17 mysql             soft    nofile  1024 

18 mysql             hard    nofile  65536 

19 mysql             soft    memlock  12582912 

20 mysql             hard    memlock  12582912

经过分析,怀疑也只有process/file这两个出现资源紧张的概率比较大.. 因此就先ps -ef 看系统中该用户的进程数量..

view sourceprint?1 [root@dbmain ~]# ps -ef | grep mysql 

2 root      4733     1  0 10:30 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/dbmain.pid 

3 mysql     4788  4733  0 10:30 ?        00:00:04 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/dbmain.err --pid-file=/var/lib/mysql/dbmain.pid 

4 root     15171 17507  0 13:26 pts/2    00:00:00 mysql -uroot -p 

5 root     20792 17163  0 15:30 pts/1    00:00:00 grep mysql

从这个输出,,我们暂时排除nproc超标的可能性.

由此, 就根据此进程的pid进入其proc目录查看当前打开的文件数量..

发现有大量socket的文件连接.. 但是其数量远远未达到文件数的限制, 由此怀疑可能是MySQL的线程也会消耗掉Linux系统的nproc基数, 因此尝试调整/etc/security/limits.conf文件的nproc参数的值.

发现调整过后, su – mysql 确实可以成功执行了,,后面又将此参数改回, 重新执行su – mysql,,此问题又再次重现..由此确认,,使用MySQL的系统, 在设置MySQL的参数max_connections之外, 还需要考虑设置/etc/security/limits.conf文件的大小, MySQL是线程模式执行的, 其线程数也会被统计在nproc中, 这可能掩盖或造成对此问题的误判..

分享到:
评论

相关推荐

    Mysql转Oracle软件 DBMover for Mysql to Oracle

    使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 Dbmover for Mysql to Oracle 可以定时,定周期自动运行。 支持 Oracle 8i 以后...

    MySQL存储过程中一些基本的异常处理教程

    有时候,不希望存储过程抛出错误中止执行,而是希望返回一个错误码。 Mysql 支持异常处理,通过...例如,当不进行异常处理时,以下代码将直接抛出一个 ERROR 1062 (23000) 错误: CREATE PROCEDURE test_proc_ins1

    MySQL 在读取异常错误缓冲区方面的提升

     在MySQL里面,错误缓冲区只记录近一次出现的错误,只要是有新的错误产生,旧的会被覆盖掉。所以想知道产生了什么错误,得在每个有可能发生错误的语句后面紧跟着show warnings 或者 show errors。 简单的方法是把...

    mysql常见错误

    mysql数据库 常见错误代码说明 1129:数据库出现异常,请重启数据库 1130:连接数据库失败,没有连接数据库的权限

    PHP和MySQL_Web开发_原书第4版 07_错误和异常处理

    PHP和MySQL_Web开发_原书第4版 07_错误和异常处理

    mysql中异常错误ERROR:2002的解决方法

    最近在启动mysql 报错,错误提示如下: ERROR 2002 (HY000): Can't connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock' (2) 排查过程 1、先查看 /etc/rc.d/init.d/mysqld status 看看...

    java开发常见错误异常

    html标签的常见错误,mysql常见错误异常,oracle常见错误异常,连接池异常,maven常见异常,hibernate常见异常,struts2常见异常等.

    JSP连接MYSQL5的中文问题解决方法

    下面的讲解是在MYSQL5.0.18,TOMCAT5.0.28,驱动为mysql-connector-java-3.2.0-alpha-bin.jar及以上版本的情况下测试的JSP连接数据库的乱码问题,分两部分来看。

    MySQL定义异常和异常处理详解

    在MySQL中,特定异常需要特定处理。这些异常可以联系到错误,以及子程序中的一般流程控制。定义异常是事先定义程序执行过程中遇到的问题,异常处理定义了在遇到问题时对应当采取的处理方式,并且保证存储过程或者...

    php+mysql 图书

    《php和mysql web开发(原书第4版)》是第4版,经过了全面的更新、重写和扩展,包括PHP 5.3最新改进的特性(例如,更好的错误和异常处理),MySQL的存储过程和存储引擎,Ajax技术与Web 2.0以及Web应用需要注意的安全...

    mysql存储过程之错误处理实例详解

    完事我们来使用DECLARE HANDLER语句来尝试声明一个处理程序,先来看语法: DECLARE action HANDLER FOR condition_value statement; 上述sql中,如果条件的值与condition_value匹配,则MySQL将执行statement,并...

    mysql提示got timeout reading communication packets的解决方法

    错误提示: user: ‘root’ host: `localhost’ (Got timeout reading communication packets) MYSQL server has gone away ...这两个值是一个全局变量,可以动态增加,如: mysql> set global interactiv

    [MySQL] 存储过程错误异常处理例子

    -- DECLARE EXIT HANDLER FOR SQLEXCEPTION

    MySqlBackup.NET 2.0.2.zip

    修复BUG:MySqlBackup.NET将解密一个空行,当加密是使这将导致异常。 特点: 1、导出/导入表的结构和行 2、导出/导入存储过程、函数、触发器、事件、视图 3、自定义表和行出口。 4、提供支持加密。 5、导出...

    PHP和mysql+web开发

    本书将PHP开发与MySQL应用...本书是第4版,经过了全面的更新、重写和扩展,包括PHP 5.3最新改进的特性(例如,更好的错误和异常处理),MySQL的存储过程和存储引擎,Ajax技术与Web 2.0以及Web应用需要注意的安全问题。

    MySqlBackup.NET备份工具 v2.0.2.zip

    修复BUG:MySqlBackup.NET将解密一个空行,当加密是使这将导致异常。   特点: 1、导出/导入表的结构和行 2、导出/导入存储过程、函数、触发器、事件、视图 3、自定义表和行出口。 4、提供支持加密。 5、...

    PHP和MySQL Web开发第4版pdf以及源码

    1.2 创建一个示例应用:Bob汽车零部件商店 1.2.1 创建订单表单 1.2.2 表单处理 1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用...

    PHP和MySQL Web开发 第4版 源代码

    本书将PHP开发与MySQL应用...本书是第4版,经过了全面的更新、重写和扩展,包括PHP 5.3最新改进的特性(例如,更好的错误和异常处理),MySQL的存储过程和存储引擎,Ajax技术与Web 2.0以及Web应用需要注意的安全问题。

    mysql-connector-net-6.8.3

    mysql-connector-net-6.8.3解决错误“具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。有关详细信息,请参阅内部异常。”

Global site tag (gtag.js) - Google Analytics