Centos

APC 文件記憶體無法正常工作,出現內部伺服器錯誤 500

  • January 23, 2015

我在 APC 正常工作時遇到了一些問題。文件記憶體始終顯示 Hits = 1 並且未命中數不斷增加,但與此同時,記憶體的文件條目在一段時間內顯示了數百個數字。使用者記憶體條目似乎正常工作。但幾乎​​每天兩次我不斷收到內部伺服器錯誤,然後必須重新啟動 php-fpm。我分配了 1024M 記憶體和其他一些正常配置的東西。如果您有更多想法,我可以提供您的電子郵件 ID 來討論這個問題並向您發送有關它的更多詳細資訊。

APC 配置如下。我嘗試過非零 ttls 和其他選項。此外,在 FastCGI 配置中 - 我嘗試將 PHP_FCGI_CHILDREN 設置為 ‘0’ 和其他值。正如我在這篇文章http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

但是內部伺服器錯誤幾乎每天都會出現兩次,我必須重新啟動 PHP-FPM

APC配置如下:

apc.cache_by_default    1
apc.canonicalize    1
apc.coredump_unmap  0
apc.enable_cli  0
apc.enabled 1
apc.file_md5    0
apc.file_update_protection  2
apc.filters 
apc.gc_ttl  3600
apc.include_once_override   1
apc.lazy_classes    00
apc.lazy_functions  0
apc.max_file_size   4M
apc.mmap_file_mask  /tmp/apc.mXJeFR
apc.num_files_hint  10000
apc.preload_path    
apc.report_autofilter   0
apc.rfc1867 0
apc.rfc1867_freq    0
apc.rfc1867_name    APC_UPLOAD_PROGRESS
apc.rfc1867_prefix  upload_
apc.rfc1867_ttl 3600
apc.serializer  default
apc.shm_segments    1
apc.shm_size    1024M
apc.shm_strings_buffer  4M
apc.slam_defense    1
apc.stat    1
apc.stat_ctime  0
apc.ttl 0
apc.use_request_time    1
apc.user_entries_hint   4096
apc.user_ttl    0
apc.write_lock  1

PHP.FastCGI 配置如下:

#!/bin/bash
PHPRC="/etc/php.ini"
PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=12000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php-cgi

只是為了社區的利益 - 這是對我造成嚴重破壞的獨特事物,在我對這個問題的廣泛搜尋中,我沒有找到任何關於這種情況的實例。

頻繁出現內部伺服器錯誤的問題是 - 在我遷移使用 APC 記憶體的新電子商務站點之前,我的伺服器上安裝了 PHP 5.4.27 和 Zend Opcache。這導致某處發生衝突並引發內部伺服器錯誤。

移除 Zend Opcache 後,另一個因素是 apc.include_once_override 設置為 ‘1’。它導致頁面失真,我在某處讀到過這個,所以能夠立即確定並設置為“0”。

現在它像魅力一樣工作正常!經過一個月的戰鬥,我如釋重負。

我認為清除記憶體是解決此問題的替代方法。重新啟動您的 apache 服務或添加類似 apc.php 文件並設置一個 cron 以根據您的需要在特定間隔後清除它。

或者 或者

如果您有有效的 open_dir 限製或者如果這是在使用者帳戶上,您必須設置 APC 的 tmp 目錄相對於具有適當權限的使用者主目錄。

引用自:https://serverfault.com/questions/607430