【发布时间】:2016-03-12 02:20:47
【问题描述】:
我有一个 GCE 实例已经运行了几个月的 PHP 应用程序。我还有一个 Cloud SQL 实例,它已经运行了几个月的 MySQL,供在 GCE 上运行的 PHP 应用程序使用。两者都分配了 IPv4 地址,并且 Cloud SQL 实例特别具有允许访问的 GCE 实例的 IP。
在大多数情况下,一切正常,但在一天中,我会随机出现以下错误:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
我找不到规律,但一天中会发生几十次。根据 Cloud SQL 文档,这很可能是由于源 IP 未获得授权 - 但是,这显然是正常情况下的情况,但有时情况并非如此。
我找不到我的配置有任何问题 - 如果我使用本地 MySQL 实例(在 GCE 实例上),一切正常,但出于各种原因,我想使用 Cloud SQL。
任何提示或帮助将不胜感激。
编辑: 我可能应该注意到,我的整个堆栈是 PHP 5.4.16、Nginx/PHP-FPM/Xenforo,在 GCE 上运行,连接到 Cloud SQL。
编辑2: 挖掘了一下,我发现这些错误似乎相关:
[3230745.933113] php-fpm[1070]: segfault at 451 ip 00007f464ee06ecc sp 00007fff3d94fdf0 error 4
[3230745.936218] php-fpm[2386]: segfault at 451 ip 00007f464ee06ecc sp 00007fff3d94fdf0 error 4
[3230745.936222] in libmysqlclient.so.18.0.0[7f464edd5000+28c000]
[3230745.939295] php-fpm[2379]: segfault at 451 ip 00007f464ee06ecc sp 00007fff3d94fdf0 error 4
[3230745.939298] in libmysqlclient.so.18.0.0[7f464edd5000+28c000]
[3230745.940917] php-fpm[2389]: segfault at 451 ip 00007f464ee06ecc sp 00007fff3d950120 error 4
[3230745.940920] in libmysqlclient.so.18.0.0[7f464edd5000+28c000]
[3230746.002919] in libmysqlclient.so.18.0.0[7f464edd5000+28c000]
【问题讨论】:
-
您使用哪个 PHP 库连接到数据库?你在使用持久连接吗?
-
看来我同时启用了 mysql 和 mysqli,尽管只有 mysqli 显示活动链接(通过 phpinfo)。两者都是 5.5.46。
-
你在 php.ini 中启用了 mysqli.allow_persistent 吗?您能否展示一些用于连接和执行查询的示例代码?
标签: google-compute-engine google-cloud-sql