【Love Affair】携帯からのアクセスに対する考察・次の一手 Part2
■ このスレッドは過去ログ倉庫に格納されています
日増しに増加する携帯からのアクセス。
かつて、羨ブラが生まれたように何かが生まれないと
ならない気がする。
たぶん解決策は、時間を売って空間を買うだと思うけど
いろいろ考察して、次の一手を決めようかと、
Love Affair 作戦。
Part2 大黒埠頭
前スレ
【Love Affair】携帯からのアクセスに対する考察・次の一手 Part1
http://qb5.2ch.net/test/read.cgi/operate/1075887465/ 3人娘の仕様は>>114です。
データを毎回読みにいくので必然的にディレイはありません。
また差分も内部にキャッシュ持たないため難しいでしょうね。 >>172
つまり、バックエンド側でディレイや差分を実装する(or しているソフトを入れる)
必要があるということですね。 うーん
ヒンフューズドというかコンプリケイティドというか
I am stupid 状態ですが
BlackGoat 側ではキャッシュの設定は受付嬢側に委ねられている設定で
受付嬢はキャッシュはしない設定であると。。。
ということは、どういうことなんでしょうか?
現在 BlackGoat はキャッシングしてない? バックエンドは、datが更新されれば内部キャッシュを更新しているんじゃないかな?
だからスレの速度がゆっくりしたデータは今以上にディレイ付くが、スレの速度が速い奴は頻繁に更新されるんじゃないかな? >>174
BlackGoatは現在、単純なProxyサーバとして動いています。
1)c-xxx →datのリクエスト→ blackgoat
2)blackgoatでdatの準備、こんなかんじ
if (blackgoatがそのdatを持っている) {
blackgoat →datの更新チェック→ 各サーバ
if (datが更新されている) {
// ここでsquidが増分取得をしているかは未確認
blackgoat →datのリクエスト→ 各サーバ
blackgoatはdatをキャッシュに格納
} else {
// キャッシュヒットにつきdatの取得はしない
} else {
// 持っていないのでdatを取得
blackgoat →datのリクエスト→ 各サーバ
blackgoatはdatをキャッシュに格納
}
3)blackgoat →datの送信→ c-xxx なるほど、なるほど
48h ほど観察して、次の話題は
1) BlackGoat にディレイ機能を入れたらどうなるか
→ 転送量(2ちゃんねる各サーバの負荷)
2) 差分読み込みまでする必要があるかどうかの検討
------------------------------------------
3) 受付嬢(とくに docomo) の負荷が高いのは
単純にアクセス数が多いからなのかどうか
あたりですかねぇ そうですね。そんなところかと。>>177
で、思いついたことを。
三人娘側でディレイを実現するのは、
どの板のどのdatをいつ最終取得したかをチェックできればいいわけです。
つまり、今までdat本体をストアしていたところに
大きさ0のxxxxxxxxxx.datファイルを作ることにして、
取得の際にそのファイルのmtimeを更新するようにするようにしておいて、
その時刻が現在時刻よりも120秒以上経過していなかったら、
blackgoat側にリクエストをそもそも発行しないようにする、というのはどうかなと。 >>178
これやると、ちょっぴりですが三人娘側でI/Oが発生しますね。
一番いいのは、blackgoat側で今もっているデータよりも120秒以上未来になってなかったら、
更新されていないとみなすようにすることか。
これってsquidの設定でできるのかしら。 >>178-179
これまでの雰囲気からは、 >>179 が本線だと思いますー つまり
現在の目標は、
1) 受付嬢の負荷を極力避けて、より多くのアクセスをこなせる様にする。
越えられない壁
2) 転送量等の話し、
ですから >>179
よくわからないけど、refresh_patternかな。 寝る前にごそごそ調べたら、squidはそもそもこの機能を持っているかも。
ということで、squid.confの設定を変えてみた。
なんとなくうまく動いているような予感。
# changed, 2 minutes delay
#refresh_pattern . 0 20% 4320
refresh_pattern . 2 20% 4320
それでは、おやすみなさい。 >>182
お、かぶりましたね。どうもそうみたい。 >root★さん FOX★さん
お疲れ様です。
昼時がどれくらいになるか楽しみですね。 ひるどき。-docomo, c-auとも劇重。
vmstat 1 で runnable process が150とか出るし。
PHPってこれ以上高速化できないのかしら。 c-others、blackgoatはまだ相当ゆとりありの模様。
あと念のため、裏側のネットワークの使われ具合をチェックしてみる必要があるかな。 どうだろう。PHPで毎回ページ作っている(= キャッシュされない)んじゃなかったっけ。>>190
で、産児制限するとそれなりにつながるようになるので、
接続要求を同時に受け付けすぎの予感も。< c-docomo ということで、観察を継続するために元の設定に戻しました。
重くても、明日夜まではこのままいきます。> c-{au,docomo,others} 今c-xxでは、リクエストした全てのdatが、まるまる配列に格納されています。
メモリに乗り切れてないってことはありますか? >>193
Perlでいう「連想配列がばちょ」ですね。
重そうな処理だなぁ。 c-docomo の負荷がなぜ高いかの推測大会ですね、
>>195
ちなみに昼休みはc-auも高負荷だったので、
アクセス数が多いことは当然原因の一つではあるかなと。
わたし的には「単純に数が多くてもうむりぽ」なのか、まだ改善の余地はあるのか、
が問題で。
vmstatでみると、httpdがRUNになっている状態のものが圧倒的に多いですね。
つまり、処理がおいついていないように見える。
blackgoatは今のところ余裕があるので、横並びでc-docomoをもうひとつ増やしてみる
というのは、可能ではあるのかも。
公衆便所の壁になに書いてもおんなじやで、ハヨみんな死ねよ、ちんぽおめこ、くさー >>197
そういう事じゃなく
今まで
1) DISK i/o が問題と推測 → DISK i/o をなくした
2) 帯域が問題と推測 → 帯域制限にかからないように方式変更
3) 今度は何?
前提としては「需要 > 供給」は当たり前なわけで、
>>200
なるほど。現有戦力で次にとれる手法は何で、そのための戦略は何?
ってことですか。
ちなみに、下記は済みのもの。
0) PHPの処理に時間がかかる → PHP acceralator導入(倍ぐらいのパフォーマンスに) >>201
そです そです。
そして突然「素晴らしい発想」が生まれ、「劇的な改善」が見込まれると、
1000% 効率アップとか、
それが出来るのは「若い柔軟な脳」だけかと、 ・ 3 人娘を単なるクローンにする。
・ c.2ch.net はシリアル番号(機種固有番号)からランダムにいずれかの 3 人娘を呼び出す。
→ランダムなので純粋に負荷が 3 等分されるのではないか?@帯域、負荷
○ 現状 3 人娘はそれぞれ違う処理を行っている?
→ HTML, HDML, MML, XML と違う出力にしているならば、
その部分を切り離して UA でそれぞれ振分けてパイプ処理で変換させるとか?(nkf みたいな pod2html みたいな) >>203
単に負荷を3等分する、というのは前にも少し考えました。
今でもpoundで簡単にできるけど。やってみますか?
後者は、中身の重そうな処理がどこかを調べることになるのかな。 c-docomo の挙動
http://mumumu.mu/mrtg/mrtg-rrd.cgi/access/c-docomoaccess-day.png
これが c-docomo に襲い掛かっているアクセスである。
48hの推移を見ると三つの部分に分かれている
1) 最初の3kくらいのところ → DISK i/o が率速だった
2) 5k 位の平坦部 → 10Mbps の帯域制限が率速だった
3) 10k - 25k を乱高下 → 純粋に襲い掛かっているアクセス?
と考えていいんだろうか、実はどこかに別の秘密が隠されているのだろうか、
解せないのは、 3) が本来のアクセスならばなぜ 1) 2) が平坦になり乱高下が
観測されないんだろう。
>>204
だめだめ、ここからもしかしたら確信なのかも知れないから
台数増やすのはいつでも簡単に出来る一番安易な方法です
また、今の目標はそこにはないです。 >>204
c-docomo を軽くしようというのは目標ですが
絶対に他のキャリアとまぜないでください
勿論、au もですけど、
せっかく分けて、分析しているのですから、 簡単に言えば
「台数増やす → 軽くなる」は既に解っている解決策ですから
実験する必要は全くないと思います。
平均化も台数増やすと同じことです。 >>205
> 3) 10k - 25k を乱高下 → 純粋に襲い掛かっているアクセス?
転送速度も絡んでいるのかもですね。
c-docomo 内部では処理が終わっているのに、なかなか全部受取ってくれていないとか。@mova類
あと気になるのが鯖名。4xx 台ってば httpd のエラーコードなんですよねぇ(^-^) >>205-207
了解です。物量以外の知恵で。
ccdによるストライピングにしてもそういうことでひねり出したわけで、
(これでディスクI/Oのキャパが2倍近くになった)。
で、乱高下は「その時の限界ぎりぎりまで資源が使われた場合」にこうなるようです。
でも、限界だと思っていたのが実は限界ではなかった、ってのを
既に何度も経験しています。
というか、弱いマシンでやらないと、弱点も見えてこないものです。
強いマシンだと詰めが甘くても、動いてしまうし。
このへんの「苦しいマシン環境での力のしぼり出し」は本業的に昔取った杵柄なので、
(もう何年もやってないけど)もう少しがんがってみようかなと。 ロードアベレージで負荷を見ているわけですが、
LA 高の原因は単純に言って
入ってくる量 > 完了する量 なわけです。
つまり処理が完了する量に注目すれば(動かすことの出来る項だと仮定すると)
どんどん完了すればいいわけです。
なぜ完了しないのか?
c-docomo が完了できないのか
呼び出し側が完了してくれないのか。。。 >>210
見ている限りでは、c-docomoが完了できないように見えますね。
常にhttpdがCPUを食っていて、とても多忙に見えます。 一つの呼び出しを処理するのにかかる平均時間というのは計測できるんですかねぇ
docomo の場合
au の場合
その他の場合
で知ることが出来たら、何か出てくるかも、 >>211
>c-docomoが完了できない
と原因を仮定すれば、どこが問題ななんだろうか?
1) CPU 性能?
2) RAM 不足?
3) network ? or その他?
何を見たらそう断定できる?
また解決すればどれくらいの効果が見込める?
逆に、ハードは変更しないとしたらどんな解決方法があるか?
あくまで仮説ですけど定額制端末に焦点を当てると違いは転送速度です
のでそれが処理の遅れになってるかもしれませんね
FOMA 最大384K
AU(WIN) 最大2.4M >214
非定額の場合でも大きな違いがありますよ(^_^;)
Docomoの主力の5xx&2xxシリーズは9600bpsだったはず。
auの主力の1xは144kbpsだったかな?
詳しい人フォローよろしく。 ちょっと疑問というか不思議なのは
当初、au : docomo : others = 4:5:1.5 という計測結果があって、
その上でいろいろ進めてきたわけですが、
http://mumumu.mu/mrtg/mrtg-rrd.cgi/access/
を見ると 4:10:1.5 に見えます。
どしてこんなに docomo の比率増えたのだろぅ
うーむ疑問だらけじゃ >>214
いくら携帯2chユーザのWIN率が高いって言ってもWINを基準にはできんじゃろう
FOMAも同じく
mova 最大 28.8kbps (505i以降)
au 最大 144kbps でも、よーわからんのだけど、ネットワーク速度がボトルネックなってる場合
1 コネクションが足りなくなって、エラーを返す
2 コネクションを開放できなくてメモリが不足してスワップが起こってLAが上がる
のどっちかになるんでないのかな?(^_^;)
現状、LAが高いんだから1ではないわけで・・・・ >217
あ、28800bpsまで上がってるのか(^_^;)>5xx,2xx >>216
i => cの誘導を開始してから、DoCoMoの比率がかなりの勢いで上がった気がします。
あと、深夜はドコモの比率が高いような。他が少なくなるだけなのかもしれませんが。 >215,217
非定額でも転送速度の差が結構ありますねぇ
転送量が少なくてもユーザーが一杯いれば僅かな差も塵も積もれば何と
やら状態って事ですかねぇ >>213
いまのところ、1)に見えますね。
メモリ不足には見えないです。
ただ、プログラムの「つくり」とか、システム(カーネル)のチューニングで
相当改善できるような気がしていたり。
で、クラシックメニューの場合画像とかはないので、携帯相手でも
転送そのものはそれなりになんとかなっているようです。
netstat -mで見ると、Send queueにデータがたまっている
(送っているが携帯が受け取ってくれない)ものはほとんどなく、
TIME_WAIT(携帯側が待っている)ものがどっさりある状態。 c-othersの今日17時ごろへこみは、私がちょっとごそごそしたせいです。
あらかじめ。 一回本当の各キャリアのアクセス数を取りたいですね。 >>255
ほほぅ なるほどです、
ちと 考え中。。。
ちなみに、docomo を二つに分けるとしてどんな分け方あるですか?
今までと同様 IP で振り分けたいのですが、 >>228
今振り分けはIPじゃなくて、携帯が名乗ってくるUAでやっています。
もちろんIPでもできるけど、今はまだやってないです。
もう1台投入した場合、二つやり方があります。
DNSで自然にラウンドロビンさせるやり方と、poundを使ってロードバランシングするやり方。
DNSで自然にやるのは、同じ性能のマシンがいっぱい来るときはシンプルでいいです。
poundだと、こっちに1/4、向こうに3/4とかいう決め細やかな制御ができます。 おのおののphpスクリプトから、その鯖のキャリアと関係ないキャリアに
対応したスクリプトをばっさり削除するってのは?
docomo専用クラシック、au専用クラシック、とか >>230 続き
DNSの場合: c-docomo.2ch.netという名前に複数のIPアドレスをつける
poundの場合: 設定で振り先のマシンを変える
いずれも、ユーザ側には同じURIをみせることができます。 >>230
平均化とか、それを目的にやるのじゃなく
折角のチャンスだからいろいろデータを取って
あれこれ研究するのが目的ですー
つまり 分け方の一例としては
1) 回線速度 a 低速 b 高速
等でわけたいのです。
何か他に分ける方法というか物差しありますかねぇ? >>233
例えばFOMAはこっちでPDCはこっちってかんじですね。
それなら、UAで見ればいけるかなと。
あとはなんだろう。< 分け方 http://www.nttdocomo.co.jp/mc-user/i/spec/useragent.html
DoCoMo/1.0 → mova
DoCoMo/2.0 → FOMA
これは個人的におもしろそうなんで統計とってほし 次の一手は・・・
1) peko 機を移動してこのLANに接続
2) c-docomo を peko 機でそのまま運用(まだ分割しない)
3) これで CPU がへたれかどうかが検証できるはず !?
懸念されることは c の機能がそっくりそのまま改造することなく peko で動くか
かな? >>236
こないだまでcomic4(cobra2246)で動いてました。< cの機能
あのときはLA=50ぐらいで、全部のキャリアを受けてたかな。 DOCOMO/AU/otherの振り分けは間違いなくできてるという前提で
LAでなく接続端末数はどうなっているのだろう
待ちプロセス多数でメモリが足りないなら接続受付数の調整で変化出てるとは思いますが この間のcobraでは送出待ち多数な状況でしたねえ(接続数とか処理周りに違いはあるけども)。
docomoとauはcobraが必要なんすかねぇ… まだ出ていないようなので、浅知恵で意見致します。
DoCoMoとauの大きな違いは、
端末でキャッシュするかしないかだと思いました。
それから、端末って、ちゃんと「処理完了」のお返事してるのでしょうか?
その辺は解決済みですか? httpd -F on tcpserver という手も残されているのかな?
実験してみたところ、無駄に風呂敷(メモリ)を広げずに動いているみたいです。StartServer も無視。
接続数なども tcpserver 側で制限できるので(-c)、その分 httpd のお仕事も減らないかなぁと。
>>241
TCP レベルのお話かな?@処理完了のお返事 続けて失礼します。
キャッシュがあると、
1.リクエストの間隔が長くなる、
2.一度のデータが大きくなる、
と思います。
誤差程度かもしれませんが、一応書いておきます。 >>242
どの階層かは思い付きませんが、その辺です。<TCP >>220 docomo2xx、5xxは下り28.8、上り9.6じゃなかたっけ。
ttp://k-tai.impress.co.jp/cda/article/showcase_top/16825.html
そーすっと。ここらへんも関係あるかも。 >>247
5xx全てが28.8Kでは無い。
504以降から28.8Kだったっけ
詳しくは知らん。 鯖負荷を見ていたら、c-docomoとc-auがパンク状態でc-othersがガラガラ
一応、c.2chの機種別総合アクセス統計が必要かも…。
・D(FOMA/mova)
・au(cdmaOne&CDMA2000/WIN/TU-KA
・v(V6&J5/V8)
・PHS(AirH" PHONE/PALDIO brouserphone/ASTELドットi)
てな感じで…。 >245 そうですね。
ADSLみたいに非対称通信といいたかったわけで。 一台増えるけど、
squid---c-docomo---黒山羊
の三段体制とかは?
squidとc-docomoは同居でも良いと思うけど。。 >>248
28.8k対応:
50xは504以降。
25xは252以降。
21xは該当無し。
6xxも該当無し。 >>251
これ以上の鯖増設は携帯ユーザーの資金でお願いします。 TCP/IP 28.8k/9600
2ch鯖 ------ GW ----- パケットの制御装置とか ----- 基地局 ------ 端末(数千万台)
この構成でTCP/IPの所まで基地局−端末間のスピードで通信してるとは思えないです。
多分どこかでバッファリングしてるはず。 今の状態を見る限りキャリアの問題とは違うんじゃないかな?
auもdocomoもほぼ同じアクセス数で同じような負荷 >>241に関連したことですが・・・・
「携帯電話は移動する」 → 電波状況が悪くなる → 強制切断
・・・で、「2chからのデータが完全に送信完了されない」ために
ゴミが溢れるということは考えられないですか? ついでですが・・・・
FOMAに限って言えば年末あたりにパケット定額料金の契約者に限定して
ネットワークの混雑状況に応じて個別に帯域制限をかける予定らしいので、
そのことで2ch鯖→FOMA携帯へのデータ送出が詰まりやすくなることも
懸念されてくるような気がしますです。 各キャリアの公式メニューに載せて有料にしちゃえよってのはガイシュツ? >>253
それで正解にしよう。
これ以上巻き添いは拙いだろう。 携帯からの接続に課金してたんじゃないのかよ!
最初はそういう話じゃ無かったか?
いくら鯖増強したって、保つわけないよ。 有料でも快適に利用したいという希望者用に●専用鯖併設というのは? 今ここはそういう話をしてるんじゃないんです
しかもおまえら全部既出 そういえば、3 人娘の Apache がまだ 2.0.49 のままですよね。@メモリリークの件 サーバのチューニングも大切だけど、PHPを使うのを
やめるのもひとつの方向性かもね。
全部のスクリプトを変えなくても、一部の重い処理だけを
バイナリ化するだけでも全然違うだろうし。 >>267
64bits 環境じゃないので関係ないですね。m(_ _)m >>268
プログラムの保守性や開発のしやすさとの兼ね合いもありますね。< PHPをやめるかどうか
個人的には、PHPを少なくとも全面的にはやめないほうがいいかなと思っています。
圧倒的にCPUを食っているのがhttpdなので、
PHPの処理であることはほぼ間違いないですね。
あとは「どの」処理に最もコストかかっているかの見極めかと。 ちょっとだけAPC(無停電電源じゃなくてPHPを高速化するモジュール)をc-auでためしてみたけど、
あんまり速くならない模様。
これでZend optimizer, PHP acceralator, APCを試してみたけど、
フリー物ではPHP acceralatorが一番(しかも、相当)いいみたい。 さきほどc-othersとc-auで呪文を唱えました。
c-docomoでも機を見て唱えてみる予定。 ■ このスレッドは過去ログ倉庫に格納されています