【问题标题】:Intermittent MySQL connection on Vagrant VirtualBox when Jenkins runs PHPUnitJenkins 运行 PHPUnit 时 Vagrant VirtualBox 上的间歇性 MySQL 连接
【发布时间】:2015-06-14 03:40:45
【问题描述】:

我们有一个 Jenkins CI 服务器,它在每次提交时运行我们的测试套件,由 GitHub 挂钩触发。

我们最近将测试套件从在 Jenkins 服务器上本地运行转移到在 VirtualBox/Vagrant VM 内运行。这是为了确保测试配置与开发环境匹配。这是在 Ubuntu 14.04 主机上运行的 Ubuntu 14.04 来宾。

迁移到 VM 模型后,PHPUnit 偶尔会失败,无法连接到 MySQL。错误是Can't connect to MySQL server on '127.0.0.1'

此错误是间歇性的,不易重现。也就是说,如果我在 Jenkins 上触发新构建,它通常会成功。但是,当新构建被 GitHub 钩子触发时,它比手动触发的构建更容易失败,有时会成功。

这是我尝试过的:

  • sudo service mysql restart 运行前phpunit
  • sleep 5mysql restartphpunit 之间
  • 连接到localhost127.0.0.1 -- 当我尝试连接到localhost 时,我收到了间歇性错误Can't connect to MySQL server on '/var/run/mysqld/mysqld.sock'

这是失败构建的完整输出:

sudo service mysql restart
 * Stopping MySQL (Percona Server) mysqld
   ...done.
 * Starting MySQL (Percona Server) database server mysqld
   ...done.
 * Checking for corrupt, not cleanly closed and upgrade needing tables.

sleep 5

sudo service mysql status
 * /usr/bin/mysqladmin  Ver 8.42 Distrib 5.6.23-72.1, for debian-linux-gnu on x86_64

Server version      5.6.23-72.1-log
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         6 sec    
Threads: 1  Questions: 111  Slow queries: 0  Opens: 761  Flush tables: 1  Open tables: 754  Queries per second avg: 18.500

phpunit
PHPUnit 4.6.2 by Sebastian Bergmann and contributors.    

Configuration read from /vagrant/phpunit.xml    

...........EEE.E.............E............................EEEEE.    

Time: 8.51 seconds, Memory: 135.25Mb    

1) ProcessDatasetsTest::test_process_on_census_fraction
PDOException: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

【问题讨论】:

    标签: mysql jenkins phpunit vagrant virtualbox


    【解决方案1】:

    我在 Vagrant 上遇到了与 Mysql 的间歇性连接问题,但与 PHPUnit 并不完全相关。连接突然下降,直到我发现在同一应用程序的 virtualbox 中有许多盒子同时运行。我把他们都杀了,然后跑了 vagrant global-status --purge,我又建立了完美的联系。

    【讨论】:

      【解决方案2】:

      我们在不同的 Vagrant VM 上看到了类似的问题 -- Can't connect to MySQL server -- 结果证明是内存问题。虚拟机内存不足。已通过在 VM 上添加或增加交换文件来解决此问题:

      sudo fallocate -l 1G /swapfile.img
      sudo chmod 0600 /swapfile.img
      sudo mkswap /swapfile.img
      sudo swapon /swapfile.img
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-11
        • 1970-01-01
        • 1970-01-01
        • 2018-09-17
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        相关资源
        最近更新 更多