[Users] Resource temporarily unavailable になった時
瀧 康史
taki @ justplayer.com
2014年 11月 29日 (土) 22:37:29 JST
瀧です。
そっちはダメですね。
add capped-memory
set physical=16G
end
とかですよね。
こっちはどうですか?
add rctl
set name=zone.max-swap
add value (priv=privileged,limit=17179869184,action=deny)
end
稼働中のZoneなら、僕が前に書いたブログをみて変えてみてください。
http://kohju.justplayer.com/Tips_Solaris_zones_apply.html
capped-memoryってのはrcapdが動いていて、この子がポーリングしながら、メモリの制限をしています。
たとえば、こんなです。
% rcapadm
state: enabled
memory cap enforcement threshold: 0%
process scan rate (sec): 15
reconfiguration rate (sec): 60
report rate (sec): 5
RSS sampling rate (sec): 5
で、ポーリング毎に、RSS(レジデントセットメモリ)をみて、
こえていたら、Swapに落としたりするわけです。
ポーリングである以上、そのポーリング間隔中にメモリを使われてしまったら制限がききませんし、
そもそもSwapに落とされるので、Global側のメモリも使われてしまいます。
Solaris含め、高度なUNIXは、VirtualMemory(=実質的なメモリ)であって、
物理メモリはその時にテーブルに載っているキャッシュみたいなものです。
rcapは実質的にはテーブルに載せるものの取捨選択の重み付けをする為のものであって、
実際にメモリの制限をするためにはswap側(=実質的なメモリ側)の方で制限をかけます。
・・・・
っていうか、実際問題、rcapって「よほどの事情」が無い限り「いらない」です。
なぜかというと、全Zoneの間で、1つでも臨界点に達し、rcapdが動き始めたら、
ページスキャナが動き始めて、ものすごくCPUパワーを使い始めます。
その結果、全体が遅くなるので、
「どうしてもこの子達だけはSwapアウトせずにオンメモリにいて欲しい」
という制御が目的じゃ無い限り、使い道が難しいんですよね。
> 2014/11/29 22:24、master @ zio-matrix.net のメール:
>
> 瀧 さん
>
>
> 難波です。
>
> 昔ながらのこれです。
>
> <zone>
> ・・・
> <mcap physcap="17179869184"/>
> ・・・
> </zone>
>
>
> On 2014/11/29 22:21, 瀧 康史 wrote:
>> 瀧です。
>>
>> zonecfgってどうなってます?
>>
>> memory capはどの方法でかけてるんでしょう?
>>
>>
>>> 2014/11/29 19:54、master @ zio-matrix.net のメール:
>>>
>>> 難波です。
>>>
>>>
>>>
>>> 先日 zone 上の Apache 2.4 MPM_worker の cgid に負荷をかけたところ、
>>> global まで波及して?? 大変なことになりました。
>>>
>>> OS : Solaris11.1/SPARC
>>> CGI: 計測用の簡単なもの @ Apache 2.4 MPM_worker cgid
>>> MEM: 16GB を割り当て(zone.cfg でキャップ)
>>>
>>>
>>> (11)Resource temporarily unavailable: apr_thread_create: unable to
>>> create worker thread
>>>
>>> となったので、刺さった か スローダウン だろうな。 という事で
>>> ベンチマークを中断しました。
>>>
>>>
>>> その後、global およびその他の zone で Resource temporarily unavailable
>>> が出るようになって、新規の fork() がほぼ失敗するようになりました。
>>> ほぼ失敗 というのは稀に一部のコマンドは成功する状態です。
>>>
>>> # fork しなくていいプロセス類は応答を返してくれました
>>>
>>>
>>> 調べようとしてもコマンドの応答が Resource temporarily unavailable に
>>> なって出力を得られない 最悪刺さってプロンプトが戻ってこない 自体に
>>> なっていました。
>>>
>>>
>>> Resource temporarily unavailable なのでメモリが枯渇した という方向でも
>>> 調査しましたが、50% の空きがありました。
>>> Resource temporarily unavailable でも時々 top が成功するので
>>> その出力から見ています。
>>>
>>>
>>>
>>> ベンチマークした CGI が無負荷でプロセスが残っていたので、kill
>>> しましたが、改善されず、reboot や shutdown も Resource temporarily
>>> unavailable で受け取らないので -> stop /SYS で止めました。
>>>
>>> # (調べている間に)30分以上待っても解消されませんでした。
>>>
>>>
>>>
>>> kenel-zone にすれば回避できるかな? という感じですが、zone のベンチ
>>> マーク等で似たような経験がある方はいませんか?
>>>
>>> これだと DoS られた挙句、global 巻き添え死 になってしまうので。
>>>
>>>
>>>
>>> 改修案としては
>>>
>>> 1. Solaris11.2 kernel-zone
>>>
>>> 2. zone のメモリキャップ(バグかもしれないので)外す
>>>
>>> 3. MPM_worker をやめる(prefork でも構わないので)
>>>
>>>
>>> と言ったところでしょうか。
>>>
>>>
>>>
>>> Xeon と比べてスレッドの多い SPARC T ですが、いろいろ上手く
>>> 使えていません。
>>>
>>>
>>> たとえば、dnsperf で
>>>
>>> $ /usr/local/nom/bin/dnsperf -c 256 -s SERVER \
>>> -d /usr/local/nom/share/queryfile-example-current_10000
>>>
>>> こんな事すると dnsperf のプロセスが刺さって、延々 LA 256+ という
>>> とてつもない事態になります。(冷却テストにしかならない)
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users @ opensolaris.gr.jp
>>> https://mx.opensolaris.gr.jp/mailman/listinfo/users
>>
>
>
--
◎1TB月額わずか980円のストレージサービス
https://teracloud.jp/
◎かんたんに編集できるウェブサイト(ホームページ)WIKIPLUS
http://www.wikiplus.jp/
◎Solarisベースのエンタープライズクラウドサービス
http://www.justplayer.ne.jp/
-------------------
ジャストプレイヤー株式会社
代表取締役CEO兼CTO 瀧 康史
〒420-0039
静岡県静岡市葵区上石町2-4 河村上石町ビル 1F
TEL: 050-3801-5987 FAX: 050-5875-5011
〒140-0014
東京都品川区大井1丁目6番3号 アゴラ大井町ビル3F MICAN内
mailto:taki @ justplayer.com http://www.justplayer.ne.jp/
ブログ: http://kohju.justplayer.com/
Twitter: http://twitter.com/kohju
http://www.facebook.com/taki.yasushi
Users メーリングリストの案内