mysql套接字连接,通过套接字的mysql连接失败

情况是,我们有带有Linux的AWS EC2介质实例.

它也有Drupal.除此之外,我们还有一些文件可以访问mysql,其设置与Drupal相同.

问题是-某一时刻mysql拒绝连接.

当负载低或负载大(与此无关)时,就会发生这种情况,一旦无法访问,mysqld进程仍在运行,并且不会崩溃.

重新启动此过程不能解决问题.重新启动实例-解决问题.

当我连接到本地主机时,它给出了这个:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

当mysql.sock文件在适当的位置并具有正确的权限.

重新启动mysqld没有帮助,但是重新启动实例-解决了问题.

my.cnf看起来像这样:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

symbolic-links=0

wait_timeout=28800

interactive_timeout = 28800

max_allowed_packet=32M

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

mysqld运行也没有任何错误,并且在日志中我们有以下内容:

120830 9:48:00 [Note] /usr/libexec/mysqld: Shutdown complete

120830 09:48:00 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

120830 09:48:01 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

120830 9:48:01 [Note] Plugin 'FEDERATED' is disabled.

120830 9:48:01 InnoDB: The InnoDB memory heap is disabled

120830 9:48:01 InnoDB: Mutexes and rw_locks use GCC atomic builtins

120830 9:48:01 InnoDB: Compressed tables use zlib 1.2.3

120830 9:48:01 InnoDB: Using Linux native AIO

120830 9:48:01 InnoDB: Initializing buffer pool, size = 128.0M

120830 9:48:01 InnoDB: Completed initialization of buffer pool

120830 9:48:02 InnoDB: highest supported file format is Barracuda.

120830 9:48:02 InnoDB: Waiting for the background threads to start

120830 9:48:03 InnoDB: 1.1.8 started; log sequence number 4191070086

120830 9:48:03 [Note] Event Scheduler: Loaded 0 events

120830 9:48:03 [Note] /usr/libexec/mysqld: ready for connections.

Version: '5.5.20' socket: '/var/lib/mysql/mysql.sock -u root' port: 3306 MySQL Community Server (GPL)

再次发生问题时,我再次获取日志,尝试先停止httpd然后mysqld,然后运行mysqld然后再运行httpd,并且日志与正常情况下的日志完全相同,并且重启顺序相同.

更改php.ini并没有保存情况:

mysql.allow_persistent = Off

按此顺序重新启动无济于事(甚至尝试了其他顺序):

service httpd stop

service mysqld stop

service mysqld start

service httpd start

我们想找出问题所在以及如何防止它那样跌落.

解决方法:

仅从提到的症状来看,可能会继续发生以下情况.希望对您有所帮助.

您的PHP可能使用持久性数据库连接,而这些连接可能无法正确关闭.一旦达到特定限制,数据库将不再接受新连接(来自UNIX套接字或网络).

在php.ini中,有一些与数据库持久连接有关的设置,例如:

mysql.allow_persistent = Off

mysqld重新启动不起作用的事实可能与两件事有关:

>重新启动可能与显式服务mysqld stop和紧随其后的服务mysqld start不同;另外,您可以在重新启动时检查日志,以查看是否遇到异常情况.

>重新启动顺序可以稍作更改,以包含您的PHP设置,因此您将首先停止apache,然后停止mysqld;之后,以相反的顺序启动它们.

标签:amazon-ec2,drupal,mysql,php

来源: https://codeday.me/bug/20191127/2076325.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值