多年来,我已经习惯于在“vi”中编辑 Perl CGI 脚本并同时打开浏览器来测试它们。最近,当我这样做时,我收到了“500”服务器错误,当我从 shell 运行脚本时,我得到“错误解释器:文本文件繁忙”。唯一的解决方案是每当我想测试脚本时退出“vi”,这是一种极大的痛苦,应该完全没有必要。那是怎么回事?我正在运行一个 Debian 服务器,我会定期更新它,我假设它是从一些所谓的“升级”开始的:)
我有一个 FastCGI (mod_fastcgi) 问题。它每隔一段时间就会发生一次,并且不会导致服务器完全崩溃,只会出现 500 个错误。这里有几件事。首先我使用 APC,所以 PHP 可以控制它自己的进程,而不是 FastCGI。另外,我将 webroot 设置为:
/var/www/html
Run Code Online (Sandbox Code Playgroud)
还有里面的 fcgi-bin:
/var/www/html/fcgi-bin
Run Code Online (Sandbox Code Playgroud)
首先是 apache error_log:
[Fri Jan 07 10:22:39 2011] [error] [client 50.16.222.82] (4)Interrupted system call: FastCGI: comm with server "/var/www/html/fcgi-bin/php.fcgi" aborted: select() failed, referer: http://www.domain.com/
Run Code Online (Sandbox Code Playgroud)
我还在“fcgi-pm”过程中运行了 strace。这是它爆炸时的跟踪片段:
21725 gettimeofday({1294420603, 14360}, NULL) = 0
21725 read(14, "C /var/www/html/fcgi-bin/php.fcgi - - 6503 38*", 16384) = 46
21725 alarm(131) = 0
21725 select(15, [14], NULL, NULL, NULL) = 1 (in [14])
21725 alarm(0) = 131
21725 gettimeofday({1294420603, 96595}, …
Run Code Online (Sandbox Code Playgroud)