在我的网站上,我启动了一个执行批处理的脚本,可以将大量的产品(文本和图像)导入到Mysql数据库中。 我正在监视Phpmyadmin> Status的查询过程,我注意到几分钟后查询的数量从〜900减less到〜30,这意味着脚本停止了! 然后我检查error_log并且实际上有这个错误:
[Thu Oct 02 17:09:34 2014] [warn] [client xxx.xxx.xxx.xxx] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server [Thu Oct 02 17:09:34 2014] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: insert_products.php
如何解决呢?
一些信息:
VPS server: 1 CPU; 40gb; RAM 1GB OS: CentOS 6.5 (Final) Plesk version: 12.0.18
我通过SSH控制台尝试(阅读本文 ):
# /usr/local/psa/admin/bin/php_handlers_control --list id: display name: version: type: cgi-bin: cli-bin: php.ini: module 5.3.3 5.3.3 module /usr/bin/php-cgi /etc/php.ini fastcgi 5.3.3 5.3.3 fastcgi /usr/bin/php-cgi /etc/php.ini cgi 5.3.3 5.3.3 cgi /usr/bin/php-cgi /etc/php.ini # /usr/bin/php-cgi -v PHP 5.3.3 (cgi-fcgi) (built: Aug 6 2014 05:52:41) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with the ionCube PHP Loader v4.6.0, Copyright (c) 2002-2014, by ionCube Ltd. # free -m total used free shared buffers cached Mem: 988 818 170 0 72 233 -/+ buffers/cache: 512 475 Swap: 1023 54 969 # ls -la /etc/passwd -rw-r--r--. 1 root root 1910 23 set 12:20 /etc/passwd
在php.ini
/var/www/vhosts/system/mydomain.com/etc
这些是我编辑的唯一属性:
max_input_time = 360000 max_execution_time = 360000 memory_limit = 1G upload_max_filesize = 1G
你说你正在运行一个MySQL脚本。 但是这听起来像是一个运行批处理的PHP脚本。 无论哪种情况,您是否有可能创造一笔巨额的单笔交易? 如果您正在使用MySQL的一个事务引擎(InnoDB是PHP新版本的默认设置),则会在脚本开始时启动一个事务。 然后在最后完成。 在长期运行的SQL批处理作业中定期提交数据是最佳做法。 否则,事务填满RAM并最终死亡。
当我在远程控制台上运行SQL命令并且MySQL服务器超时时,我也会看到这个消息。 为了解决这个问题,我将SSH连接到服务器,并在MySQL控制台本地运行长时间运行的命令。
我希望这有帮助。