私の目標は、drupal 6本番サイトのオペコードキャッシュにAPCを実装することです。これまで、include_onceを含む他のphpファイルを含める場合と含めない場合のいくつかのphpファイルでAPCをテストしました。
また、shm_size、apc.include_once_override、apc.statのapc.ini値を微調整しようとしました。毎回Apacheを再起動しました。
その結果、apc.phpは値の変更を表示しません。 (もちろん、変更されたapc.ini値は表示されます)
Apc.phpテストページを更新するたびに、開始時刻が現在の時刻としてリセットされ、稼働時間が0分になります。
apc.php -testpageは以下を示しています:
General Cache InformationAPC Version 3.1.9
PHP Version 5.2.10
APC Host xxxx.xx.xx
Server Software Apache/2.2.3 (CentOS)
Shared Memory 1 Segment(s) with 128.0 MBytes
(mmap memory, pthread mutex Locks locking)
Start Time 2011/07/26 11:53:56
Uptime 0 minutes
File Upload Support 1
Cached Files 0 ( 0.0 Bytes)
Hits 1
Misses 1
Request Rate (hits, misses) 2.00 cache requests/second
Hit Rate 1.00 cache requests/second
Miss Rate 1.00 cache requests/second
Insert Rate 0.00 cache requests/second
Cache full count 0
Cached Variables 0 ( 0.0 Bytes)
Hits 0
Misses 0
Request Rate (hits, misses) 0.00 cache requests/second
Hit Rate 0.00 cache requests/second
Miss Rate 0.00 cache requests/second
Insert Rate 0.00 cache requests/second
Cache full count 0
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 0
apc.lazy_classes 0
apc.lazy_functions 0
apc.max_file_size 16
apc.mmap_file_mask /tmp/apcphp5.095eRm
apc.num_files_hint 1024
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 128M
apc.slam_defense 0
apc.stat 0
apc.stat_ctime 0
apc.ttl 7200
apc.use_request_time 1
apc.user_entries_hint 4096
apc.user_ttl 7200
apc.write_lock 1
Host Status Diagrams:
Free: 128.0 MBytes (100.0%) Hits: 1 (50.0%)
Used: 20.3 KBytes (0.0%) Misses: 1 (50.0%)
Detailed Memory Usage and Fragmentation:
Fragmentation: 0%
phpinfoは示しています:
Server API CGI/FastCGI
APC:
Version 3.1.9
APC Debugging Enabled
MMAP Support Enabled
MMAP File Mask /tmp/apcphp5.JkKDk7
Locking type pthread mutex Locks
Serialization Support php
Revision $Revision: 308812 $
Build Date Jul 21 2011 14:31:12
次の手順に従って、suexec設定でキャッシュが妨げられるかどうかを確認しました。 http://www.litespeedtech.com/support/forum/showthread.php?t=4189
[root@Host /]# ps -ef|grep lsphp
root 20402 17833 0 11:21 pts/0 00:00:00 grep lsphp
[root@Host /]# ps -waux
root 17833 0.0 0.1 5004 1484 pts/0 S 10:39 0:00 bash
..ホストで実行されているlsphpがないことを示します
また、次の記事とコメントを読んで、私の場合、ユーザーApacheがhttpdプロセスの所有者であるため問題はsuexecではないと結論付けています http://www.brandonturner.net/blog/2009/07/fastcgi_with_php_opcode_cache /
また、suexecコマンドは、root @ Hostとしてログに記録され、起動されたときに認識されません。
また、ホスト上で実行されているcPanelがないことをほぼ確信しており、そこで設定すると、実行中のキャッシュプロセスが一定の間隔でリセットされるかどうかを確認できます。
これは私に次に向かうべき場所のいくつかの手がかりを残します。 Apacheをapc.phpファイルといくつかのテストphpファイルの所有者として(chownとchgrpで)設定しようとすると、500サーバーエラーが発生しました。
ファイルのパーミッションがapcの実行を妨げるかどうかを確認する方法はありますか?私はどんな提案や助けにも非常に感謝しています。
構成では、 apc.max_file_size
が16
bytesに設定されていることが示されています。したがって、16バイトを超えるファイルはキャッシュされません(すべてがキャッシュされます!)。これをデフォルトの1M
にリセットします。
そのホストでSELinuxが有効になっていますか? getenforce
で確認してください。 Enforcing
を返す場合は、有効になっています。
有効になっていて不要な場合は、一時的に(つまり、次の再起動まで)setenforce 0
で無効にしてみてください。これで問題が解決し、SELinuxを永続的に無効にする必要がある場合は、/etc/selinux/config
ファイルを変更して、そこで無効に設定します。あるいは、SELinuxをより寛容になるように変更することもできますが、それは別のトピックであり、これが本当にSELinuxのせいである場合は、それに戻ります。 :-)
EDIT: OK、SELinuxが無効になりました。
/ tmpの下に/tmp/apcphp5.JkKDk7
スタイリッシュなファイルが表示されていますか?
同様の問題を探している人がこれを見つけた場合は、apc.enable_opcode_cache = 1
を確認する必要があります。
「開発ブランチ(3.1.5dev)で、オペコードキャッシュ(apc.enable_opcode_cache = 0)を無効にするオプションが導入されました。これにより、ユーザーデータに対して厳密にZendOPcacheとAPCを使用できます。」 -レミブログ
私も同じ問題を抱えていました。それはtmpの問題でした。 mmap_file_maskを/ dev/zeroに設定すると、キャッシュされます。同じユーザー名でdrupal.orgに投稿された詳細。
Tmpにパーミッションを設定しても、正しいパーミッションでマウントされていない場合は役に立ちません。