Zend/Apache2:在多次请求url时找到302

Hor*_*ren 8 php mysql api zend-framework apache2

我正在使用Zend框架编写REST API. 当多次调用url时(例如,每秒1次请求1000次),在大约0.2%的情况下,而不是作为响应得到- 所以重定向到不同的页面. 这是整个服务器响应:
200 OK302 Found

302 Found Date: Mon, 04 Mar 2013 11:56:04 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.11
Set-Cookie: PHPSESSID=ui9r8jqa63dbom8osknso6eea5; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: /de/default/index/index/error/500
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

所以Zend重定向到错误500(内部服务器错误)页面.问题是为什么 - 我只是无法搞清楚......
被调用的php页面将一行插入MySQL数据库并返回一个JSON字符串 - 这就是全部.

Apache2有大约20个并发连接打开,服务器负载是<< 1所以我真的不明白为什么请求会导致问题.

我知道这对于远程诊断来说是一个非常困难的问题,但是如何解决这个问题的好猜测和建议非常受欢迎!谢谢.

这是@chris要求的apache vhost配置:

<IfModule mod_ssl.c>
<VirtualHost mydomain.tld:443>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    ServerName www.mydomain.tld
    ServerAlias mydomain.tld *.mydomain.tld
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/ssl_access.log combined

#   RewriteLog "/var/log/htaccess.log"
#   RewriteLogLevel 5

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual host.
    SSLEngine on
    SSLOptions +StrictRequire
    SSLCertificateFile /etc/apache2/ssl/cert_2013_2014.crt
    SSLCertificateKeyFile /etc/apache2/ssl/www.mydomain.tld.key
    SSLCACertificateFile /etc/apache2/ssl/intermediate.crt

</VirtualHost>
</IfModule>
Run Code Online (Sandbox Code Playgroud)

Hor*_*ren 0

哇 - 这是一个完全意想不到的问题,而且真的很难弄清楚......

@AdrianWorld 帮助我走上了正轨。在Zend ErrorController中我输出错误消息并发现以下异常:

ps_files_cleanup_dir: opendir(/var/lib/php5) failed: Permission denied (13) Array
Run Code Online (Sandbox Code Playgroud)

这显然是一个非常常见的问题,如此处所述并已解决
该变量session.gc_probability设置为1in php.ini,这意味着垃圾收集器有 1% 的概率运行并清理存储/var/lib/php5php 会话的目录。显然,该文件夹不可写,www-data导致上述错误并抛出 Zend 异常。

由于session.gc_probability仅设置错误随机发生的概率,使得调试相当困难。

不管怎样,我很高兴它得到了解决 - 感谢所有的提示和猜测:)