2012年9月8日土曜日

ここがプラネタリーメゾンの世界か・・・

この世界での役目は何だ!

20120907184421_2
Vol3を買ったので次の新しいコロン、プラネタリーメゾンがメインとなるようです。
まだ修復終わっただけで話が進んでいませんが、一日一話くらいのペースでやっていきます。
万寿沙羅では天文派を救った英雄、夢ノ球では天文派の生活を奪った犯罪者という扱いを受けてきましたが、新天地プラネタリーメゾンではどうなることやら。
聞けばここは歓楽コロニーで、金のあるやつが集まる場所だそうです。ここには地文だろうが天文だろうが金のある奴が全て。天文地文の争いは無いけど富豪と貧乏人という区別はあるようです。
先日このような記事を見つけてちょっとびっくりしました。
【CEDEC 2012】『シェルノサージュ』はどのようにクラウドサービスを導入したのか
私はゲームのネットワークについてはまったく知りませんし、詳しく書かれても理解はあまりできない。でもこの文章を見てちょっと愕然としたね。
******************************
【スクリプトの負荷増大によるサーバダウン】
解決策:永久ループを極力回避するスクリプトを組む
while文などはミスを起こしやすいので、使用は避けた方がいいとのことです。phpならばfor,foreach文を使用するようにします。もしwhile文を使用する場合は、カウント変数などを使った強制離脱処理を入れるようにすればいいとのことでした。
多くの問題を解決していくなかで、サーバ負荷の低減はDBの処理方法次第であると気付いたそうです。特に大量レコード取得(=select)は極端な処理時間増大につながりやすいということです。「1件の処理時間÷サーバ同時処理数>平均アクセス間隔」というサーバーダウンの法則も明らかになりました。
最後に、これから運営を開始しようと思っている方にさらなるアドバイスもありました。
・DBには適切なインデックスを付ける(検索カラムにインデックスを付けるだけで、処理が4秒→0.1秒に)
・フレームワークはDBアクセス回数を調べる
・1回のレコード取得数は極力減らす
・Apacheの同時接続数、コネクションタイムの調整をする
・クラウド業者選択時には24時間サポートしてくれる業者を選ぶ(ゲームAPIで1時間のダウンは致命的、深夜でも早期復旧が可能な業者を選択するべき)
・サーバリソースをけちらない(最初だけでもスクリプト処理サーバは考え得るMAX、DBサーバも1テーブル1サーバ用意できればよい。)
今後にも期待の高いゲームのクラウド活用ですが、貴重なアドバイスやTipsが発表され、大きな拍手に包まれセッションは終了しました。

******************************引用ここまで
色々突っ込みたいことが満載でした。
DBには適切なインデックスを付ける(検索カラムにインデックスを付けるだけで、処理が4秒→0.1秒に)
おいおいおいおいー。こんなの当たり前だろう。インデックスを付けることにより検索が早くなることは初心者でもたどり着けるところだよ。データ量が多ければあまり効果が得られない場合もありますが、大体は効果があります。普段のコンシューマがどういったDBを使ってるかは判りませんが、ネットワークでのプログラムでは速度が命ですからDBメンテも結構重要なんですよ。コンシューマで長年ゲーム作ってる会社が始めてweb系に手を出すとこうなるのか。
フレームワークはDBアクセス回数を調べる
どういったアクセスをしているのかはわからないけど、たとえばマスタから名前を引き当てるだけの単純なものであれば連想配列として一度読み込んで配列から値を取得したりでしょうか。これはwebじゃなくても普通のアプリでもやることですけどね。極力DBアクセスは減らしたいですから。これもメモリに制約がありそうなコンシューマでの経験だからなんでしょうか。
1回のレコード取得数は極力減らす
まさかselectでとったやつ全部やってたのだろうか。・・・シェルノサージュの初期の奴を見るとそうなんだろうな。フレンドリストとか全部読み込まれてたからなぁ。ページ送りなどは常識っすよ!アクセスがちょっと増えるけどそんなもん気にすんな!確かにユーザはどんなデータが欲しいか判らないけど、待たされたり処理によってシステムが落ちるよりかはましだ!!
while文などはミスを起こしやすいので、使用は避けた方がいいとのことです。phpならばfor,foreach文を使用するようにします。もしwhile文を使用する場合は、カウント変数などを使った強制離脱処理を入れるようにすればいいとのことでした
うーーーーーい!!マジかよ!!!そんなもの考慮するのは当たり前だろおおおおおお!!!
末端プログラマの私でも理解してることを何故ドヤ顔で発表するのだろうか・・・。色々と不安だよ。
ゲームとか作ってる人は尊敬していましたが、まさかこんな初歩的な話をアドバイスとして出されるとは思わなかったよ。
もしくは私が想像していないような複雑な処理があったり、もっと違う理由があるのかもしれない。けど、こんなの恥ずかしくてTipsなんかにできねーーーーー!!!