PHPプログラムの問題をデバッグしているときに、このメッセージが表示されます。
* hard nofile 500000 * soft nofile 500000 root hard nofile 500000 root soft nofile 500000
ここで説明されているように( https://rtcamp.com/tutorials/linux/increase-open-files-limit/ )。その後、入力します
ulimit -Hn
そして
ulimit -Sn
新しい制限500000を明らかにします。
セッションに必要なpam_limits.so
その後、システムを再起動しました。私のプログラムは、ファイル#1025を開こうとすると、例外をスローし続けます。
PhpプロセスPID(27263)を取得してから、cat/proc/27263/limitsを実行しました
ソフト制限ハード制限単位の制限 最大cpu時間無制限無制限秒 最大ファイルサイズ無制限無制限バイト 最大データサイズ無制限無制限バイト[.____。 .____。]最大スタックサイズ10485760無制限バイト 最大コアファイルサイズ0無制限バイト 最大常駐セット無制限無制限バイト 最大プロセス9512495124プロセス 最大オープンファイル10244096ファイル 最大ロックメモリ6553665536バイト 最大アドレススペース無制限無制限バイト 最大ファイルロック無制限無制限ロック 最大pe nding signal 95124 95124 signal Max msgqueue size 819200 819200 bytes Max Nice priority 0 0 Max realtime priority 0 0 Max realtime timeout無制限無制限us
ご覧のとおり、これらのシステム全体の構成を設定した後でも、PHPプロセスには1024の最大オープンファイル制限があります。
なぜ??どうすれば変更できますか?この特定のケースでシステム全体の設定が機能しないのはなぜですか?
ありがとうございました
* hard nofile 500000 * soft nofile 500000 root hard nofile 500000 root soft nofile 500000
ulimit -n 500000
再起動(絶対に必要かどうかわからない)
ビンゴ!
limitsをstart-stop-daemonで動作させる および このRed Hatメーリングリストのディスカッション によると、
limits.conf(5)は、pam_limits(8)の構成であり、/ etc /pam.dの構成に従ってPAMスタックによってアクティブ化されます。ただし、init.dスクリプトから起動されたstart-stop-daemon(8)はPAMスタックを通過しないため、これらの種類の設定が適用されることはありません。
または簡単に言えば、
/etc/security/limits.confはログインに適用され、ユーザー「Apache」はログインしていません。
最初のリンクで提案されている解決策は、init.dスクリプトを編集し、スクリプトの最後にulimit-nを追加することです。
ただし、2番目のリンクで確認できるように、/ etc/init.d/httpdスクリプトを編集すると、システムの更新によってファイルが上書きされ、変更が失われる可能性があります。
そのため、代わりに/ etc/sysconfig/httpdファイルを編集してそこにコマンドを入力するように ここ 、 ここ および ここ を提案しました。
それが私がしたことであり、今私は美しい猫/ proc/pid/limitsを思い通りに手に入れました:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 500000 500000 processes
Max open files 500000 500000 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 95124 95124 signals
Max msgqueue size 819200 819200 bytes
Max Nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
プログラムがクラッシュしなくなりました。
ちなみに、システムはRHEL Server6.6です。