同時受講数が増えた際のエラーについて

同時受講数が増えた際のエラーについて

by M Numata -
Number of replies: 5

いつもお世話になります。

同時受講者数が増えた際、サーバが落ちてしまう問題が起きています。
Moodleに関係なくApache等の問題かもしれないのですが、、アドバイスがいただけたら幸いです。
エラー>Fatal error: Out of memory (allocated 2097152) (tried to allocate 1052672 bytes) in xx\server\moodle\cache\stores\file\lib.php on line 368

環境
Moodle 3.5.3+(Build 20181123)
Windows Server 2019
Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/7.0.9
(PHPのメモリ設定は増やしてありました>memory_limit 20000M)

状況
約200人の同時アクセスで制限時間有/10問の小テストを実施➡開始すぐApacheがエラーで落ちる、
繰り返し再起動がかかる事態になり、テスト続行不可能となりました。
①その時に出ていたエラー(>Server ran out of threads to server requests. Consider raising the ThreadsPerChild setting)に従ってThread per Child 150→250に変更したところ、このエラーは出ないが同時接続で落ちる問題は改善されず。

②ThreadStackSizeの変更が有効だと認識して
Thread per Child 150
ThreadStackSize 8388608 と変更したところ、今度は10名程度の同時受験でエラーが出るようになってしまいました(冒頭に記載したエラー)


同じエラーに関する投稿を見つけたのですが>https://moodle.org/mod/forum/discuss.php?d=394752
これだと、当方としては同時接続200人で落ち続けた設定に戻すことになってしまいます…

他に確認したらよい設定など、アドバイスを頂けたら幸いです

Average of ratings: -
In reply to M Numata

Re: 同時受講数が増えた際のエラーについて

by Mitsuhiro Yoshida -
Picture of Developers Picture of Particularly helpful Moodlers Picture of Translators
可能でしたら、OPcacheをお試しになってはいかがでしょうか。

参考資料:
[PHP Enable OPcache Windows | Essential steps - bobcares]
https://bobcares.com/blog/php-enable-opcache-windows/

[Windows でのおすすめの構成 - phpspot ]
https://phpspot.net/php/man/php/install.windows.recommended.html

[WindowsでのOPcache導入手順 | プログラム覚え書き]
https://www.hiskip.com/pg-notes/lang/php/php-notes/1401.html

[PHP: OPcache - Manual]
https://www.php.net/manual/ja/book.opcache.php
In reply to Mitsuhiro Yoshida

Re: 同時受講数が増えた際のエラーについて

by M Numata -
Yoshidaさま
早速ありがとうございます!
OPcache自体は有効になっていたのですが、いくつか推奨とは設定が異なるところがあったので変更してみたいと思います、いつもアドバイスありがとうございます。
(推奨と違う箇所)
opcache.enable_cli Off
opcache.max_accelerated_files 20000
opcache.memory_consumption 256
In reply to M Numata

Re: 同時受講数が増えた際のエラーについて

by M Numata -
こんにちは。
同時受講が増えるとサーバが落ちてしまう件で前回アドバイスをいただいております。
その後、
・OPCache設定を推奨に合うよう見直し
・Apache、PHPを64bitに入れ替え(元が32bit版でした…!)
を行いましたが
多少レスポンスが早くなったかと感じられたものの、動作検証で200同時アクセスを処理しきれず落ちてしまう状況は変わりませんでした。(ApacheBenchで、小テスト受験中のページを指定して同時アクセスさせて検証しています)


そもそものハード構成や利用状況に無理があるのか…とも考えているのですが
影響を及ぼしそうな箇所が理解できておらず。
参考にできそうな方向があればアドバイスをいただきたくお願いいたします。

(現状)
Processor AMD EPYC 7232P 8-Core Processor
Memory(RAM) 20GB
Windows Server2019 Standard
Apache/2.4.41 (Win64) OpenSSL/1.0.2s
PHP/7.0.9
10.4.6-MariaDB - mariadb.org binary distribution

また、このApacheにVirtualHostで2つ目のサーバ名をつけて、もう1つのMoodleを動かしています。
(2nd Moodleは、同じバージョンMoodle 3.5.3+(Build 20181123)で、同時アクセス数名程の運用です)
2つ稼働していること自体がメモリ不足を生じさせている可能性もあるのでしょうか。。
 
長々と申し訳ありません、よろしくお願いいたします。
In reply to M Numata

Re: 同時受講数が増えた際のエラーについて

by Mitsuhiro Yoshida -
Picture of Developers Picture of Particularly helpful Moodlers Picture of Translators
Windows Server2019 Standardで仮想メモリ (ページファイル) は設定されていますでしょうか? 

まだ設定されていません場合、40GB程度の仮想メモリをお試し頂いても宜しいかと思います。

In reply to Mitsuhiro Yoshida

Re: 同時受講数が増えた際のエラーについて

by M Numata -
Yoshida様

返信が遅れて申し訳ありません。いつもアドバイスをいただきありがとうございます。

確認したところ、仮想メモリは約3GBほどの割り当てになっていたため、
元々表示されていた推奨値を「初期サイズ」、推奨いただいた40GBを「最大サイズ」に設定変更しました。
あらためて負荷テストを行い検証してみます。
幅広くアドバイスいただき感謝しきれません、ありがとうございます!