Egweneのリネージュ活動報告 - エミュ鯖での活動記録とか。あとなんか色々書く。

05« 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 »07
--

--

--:--
--
--

No.0

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
06

16

02:13
Wed
2010

No.026

うしこがんばれ超がんばれ!
いやむしろ超がんばってる!かっこいいよ!


で、ちょっとやってて気になったこと。

止まり方見てると、
どうもサーバ側に処理が溜まってクライアントに返ってきてない感じだよなぁ。
何かのループ処理とか再起処理から抜けられなくなってるような感じ。
それか、共有資源にみんなが触ろうとしてロックがかかってるような・・・。

あと、
敵倒した後にEXP入るのが遅れるときがあるんだよね。
なんでかなってちょっと考えてみたんだけど、おそらく
DBに書き込みにいってるんじゃないかなと。

マヨ鯖Wikiみても
クランレベル †
クラン入隊するとそのキャラクターが持っているexpがクランに加算されます。
キャラクター自身のexpが無くなる訳ではありません。
また、別キャラクターのexpも加算されます。
脱退すると逆にクランからexpが減算されます。
キャラクター自身のexpは担保されています。

クラン入隊後は、画面上のexp/Lvバーはクランのexp/Lvバーとなります。
どこかでクラン員が敵を倒せば、自身のexpバーも増えて見えます。


と書いてあることから、
常にDBへの書き込み(UPDATE)と読み込み(SELECT)を行ってると思うんだよね。
#違うんであれば、これ以降は読む必要なし。

んで、MySQLのトランザクションの仕様よく知らないけど、なんとなくロックが発生する気がする。

http://www.y2sunlight.com/ground/?MySQL4.1%2F9.MySQL%A4%CE%BC%C2%B8%B3%2F4.%A5%C8%A5%E9%A5%F3%A5%B6%A5%AF%A5%B7%A5%E7%A5%F3
ここ読むと、SELECT文は共有ロック、UPDATE、INSERT、DELETE文は排他ロックと書いてある。
(斜め読みだから合ってるかはわからん)
もしかしたら、共有ロック中に排他ロック処理しようとして処理が返ってこなくなるんじゃないかな。

でも、共有ロックは一時的にしかかからないはず・・・とここまで書いて思った。

パラディンやアサシンの変身で加速にひっかかって落ちたタイミングで共有ロックかけてたら、
そのままロックが残ってしまう可能性はある。かも。そこにUPDATE処理走ろうとして、
待ち状態になるんじゃないだろうか。

んで、UPDATE処理が溜まりまくってDBがビジーになる、と。
誰かが「チャットするとフリーズする」って言ってたけど、DBビジーの状態でチャットをすれば、
チャットの内容をログテーブルに書き込みにいって、そのタイミングで待ち状態になって
処理が返ってこなくなって結果としてフリーズってのはありえる。

いやでも、コネクションをロストしたタイミングで強制的にロック外れるはずだよなぁ・・・。

ちょっと動かしてみないと確かなことは言えないけど、可能性としてはありかな。
でも確かL1JのDBの標準はMyISAMだったはずだからトランザクションとか関係ねーかなあぁぁぁ。

でも経験値のDB処理あたりがやっぱくさい気がする。
思い出してみると、狩り中に止まったなーと思ってると、経験値が増えた瞬間に動き出すとかよくあった気がする。
気がするだけかもしれん。


ここまで書いたけど、まぁほぼ妄想だな。
ぜんぜん見当違いのこと言ってるかもしれんw
何かの足しになれば幸いだが、逆に混乱のもとになりかねんなw


とりあえずわからんから寝る。
きっと天才BSEうしこコンビが解決してくれるはずだ!
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。