[Users] Resource temporarily unavailable になった時
瀧 康史
taki @ justplayer.com
2014年 11月 29日 (土) 22:55:37 JST
瀧です。
> 2014/11/29 22:48、master @ zio-matrix.net のメール:
> リソースじゃぶじゃぶなら、キャッピングなし で良いんですかね。
> サービスがリソース使い切れるほどチューニング出来てない のが制限かなと。
> global の swap を食われたのが原因な気がしてきました。
> SSD なので、物理メモリより swap が小さいので。
ここが誤解しやすいのですが、ここでいうswapというのは、
ディスクとして追加するswapではなくて、
swap=VirtualMemory=実質的なメモリ空間
の事なのですよ。
なので、
swap: 確保されたストレージ
ではなく、
swap: 確保されたストレージ+物理メモリ
になるのです。
たとえば、こんな感じです。
% swap -sh
total: 63G allocated + 2.0G reserved = 65G used, 250G available
vmstatで出てくるswapはこっちのほうですね。
確保されたストレージの方はこちら。
% swap -lh
swapfile dev swaplo blocks free
/dev/zvol/dsk/rpool/swap 287,2 8K 128G 128G
※s10は-hがなかったかもしれませんが。
で、zone.max-swapの方は、swap=VirtualMemory=実質的なメモリ空間 の方なので、
実際に制限するメモリの事なのですよ。
> On 2014/11/29 22:37, 瀧 康史 wrote:
>> 瀧です。
>>
>> そっちはダメですね。
>>
>>
>> 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 メーリングリストの案内