Hatena::ブログ(Diary)

主にボードゲームやプログラミング - k.bigwheelの日記 このページをアンテナに追加 RSSフィード Twitter

2015-02-26

lol中に激しいラグが発生したため調査したこと その後1

本日、以前と同じ現象がゲーム中に発生した(logsoflagの可視化結果はこちら)。

pathpingコマンドとpingコマンドでパケットロスが発生する箇所を調べたところ、やはりルータを出て直ぐの箇所(tok7nn1m3.vectant.ne.jp)だった。

おそらくマンション内にかなり近いところで問題があるとかんがえられるため、NTTフレッツのサポートへ連絡する。

続きを読む

2015-02-07

lol中に激しいラグが発生したため調査したこと

現象

lolをプレイ中にaaの間隔が不規則になったり移動がキャンセルされたり(ラバーバンド現象)敵やミニオンが瞬間移動するような現象が発生した。

目的

プレイ精度・ストレスを改善するために問題原因・解決法を見つける

調査過程

一緒にプレイしている友人に依頼してLogs of Lagを利用してネットワークログを調査した結果、以下のことがわかった。

  • 上記現象を感じたときは http://logsoflag.com/#N7Jcqlkw1VP のようにパケットロスが大量に発生
  • 現象を感じなかったプレイのときはパケットロスはほぼなし
  • 自分が現象を感じたとき、同じゲームを同時にプレイしていた友人側ではパケットロスなし
  • 上記現象が起こるのは平日の22時前後もしくは休日の昼間が多い
  • Logs of Lagサイトで表示される典型的なbad networkは http://logsoflag.com/#v1yiEVKr7_p のようにping値も瞬間的に増えるが自分のケースではすべてping値は120前後で安定している

今後の行動

調査の結果、まず自分の通信経路のどこでパケットロスが頻発しているのかを調べる必要があるという結論になった。

よって今後は以下のように動く。

  1. 次に上記現象を感じたプレイ中にコマンドを実行 「pathping -q 200 66.150.148.1」
  2. パケットロスが大きく発生する場所を確認
    • 国内で発生してる場合 → NTTもしくはプロバイダーに報告、改善を要求
    • 国外で発生している場合 → VPNを通して接続することで改善するか確認

参考:ラグを(それほど)感じない時のpathping結果とパケットロス

パケットロスが100%になっている箇所はおそらく直接のネットワーク接続を禁止している箇所かもしくはping拒否している箇所なので、もっとも怪しいのは5%のパケットロスを発生させている ae-2.a21.tokyjp01.jp.ra.gin.ntt.net [61.213.160.109] か。

http://logsoflag.com/#L_12aS5cgJ5

C:\Users\kbigwheel>pathping 66.150.148.1

66.150.148.1 へのルートをトレースしています。経由するホップ数は最大 30 です

  0  flagship [192.168.24.20]
  1  192.168.24.1
  2  tok7nn1m3.vectant.ne.jp [163.139.126.199]
  3  163-139-126-222.rv.vectant.ne.jp [163.139.126.222]
  4  163-139-68-53.rv.vectant.ne.jp [163.139.68.53]
  5  ae0.core1.otemachi.vectant.ne.jp [163.139.128.54]
  6  ae-2.a21.tokyjp01.jp.ra.gin.ntt.net [61.213.160.109]
  7  ae-11.r25.tokyjp05.jp.bb.gin.ntt.net [61.213.162.173]
  8  ae-1.r20.tokyjp05.jp.bb.gin.ntt.net [129.250.6.210]
  9  ae-2.r20.sttlwa01.us.bb.gin.ntt.net [129.250.3.12]
 10  ae-1.r05.sttlwa01.us.bb.gin.ntt.net [129.250.5.47]
 11  be3048.ccr21.sea02.atlas.cogentco.com [154.54.11.9]
 12  be2083.ccr21.sea01.atlas.cogentco.com [154.54.0.249]
 13  be2075.ccr21.sfo01.atlas.cogentco.com [154.54.0.233]
 14  be2164.ccr21.sjc01.atlas.cogentco.com [154.54.28.34]
 15  be2160.ccr21.lax01.atlas.cogentco.com [154.54.27.161]
 16  be2019.ccr21.lax04.atlas.cogentco.com [154.54.88.10]
 17  38.88.197.162
 18  border1.po1-40g-bbnet1.lax010.pnap.net [216.52.255.13]
 19  66.150.148.1

統計を 475 秒間計算しています...
            ソースからここまで   このノード/リンク
ホップ  RTT    損失/送信 = Pct  損失/送信 = Pct  アドレス
  0                                           flagship [192.168.24.20]
                                0/ 100 =  0%   |
  1    0ms     0/ 100 =  0%     0/ 100 =  0%  192.168.24.1
                                0/ 100 =  0%   |
  2    4ms     0/ 100 =  0%     0/ 100 =  0%  tok7nn1m3.vectant.ne.jp [163.139.126.199]
                                1/ 100 =  1%   |
  3    6ms     2/ 100 =  2%     1/ 100 =  1%  163-139-126-222.rv.vectant.ne.jp [163.139.126.222]
                                0/ 100 =  0%   |
  4    7ms     2/ 100 =  2%     1/ 100 =  1%  163-139-68-53.rv.vectant.ne.jp [163.139.68.53]
                                0/ 100 =  0%   |
  5    8ms     2/ 100 =  2%     1/ 100 =  1%  ae0.core1.otemachi.vectant.ne.jp [163.139.128.54]
                                0/ 100 =  0%   |
  6    8ms     6/ 100 =  6%     5/ 100 =  5%  ae-2.a21.tokyjp01.jp.ra.gin.ntt.net [61.213.160.109]
                                0/ 100 =  0%   |
  7    9ms     4/ 100 =  4%     3/ 100 =  3%  ae-11.r25.tokyjp05.jp.bb.gin.ntt.net [61.213.162.173]
                                0/ 100 =  0%   |
  8    8ms     4/ 100 =  4%     3/ 100 =  3%  ae-1.r20.tokyjp05.jp.bb.gin.ntt.net [129.250.6.210]
                                0/ 100 =  0%   |
  9  101ms     3/ 100 =  3%     2/ 100 =  2%  ae-2.r20.sttlwa01.us.bb.gin.ntt.net [129.250.3.12]
                                0/ 100 =  0%   |
 10  111ms     1/ 100 =  1%     0/ 100 =  0%  ae-1.r05.sttlwa01.us.bb.gin.ntt.net [129.250.5.47]
                                3/ 100 =  3%   |
 11  128ms     5/ 100 =  5%     1/ 100 =  1%  be3048.ccr21.sea02.atlas.cogentco.com [154.54.11.9]
                                0/ 100 =  0%   |
 12  ---     100/ 100 =100%    96/ 100 = 96%  be2083.ccr21.sea01.atlas.cogentco.com [154.54.0.249]
                                0/ 100 =  0%   |
 13  ---     100/ 100 =100%    96/ 100 = 96%  be2075.ccr21.sfo01.atlas.cogentco.com [154.54.0.233]
                                0/ 100 =  0%   |
 14  123ms     6/ 100 =  6%     2/ 100 =  2%  be2164.ccr21.sjc01.atlas.cogentco.com [154.54.28.34]
                                0/ 100 =  0%   |
 15  126ms     4/ 100 =  4%     0/ 100 =  0%  be2160.ccr21.lax01.atlas.cogentco.com [154.54.27.161]
                                0/ 100 =  0%   |
 16  119ms     5/ 100 =  5%     1/ 100 =  1%  be2019.ccr21.lax04.atlas.cogentco.com [154.54.88.10]
                                0/ 100 =  0%   |
 17  119ms     4/ 100 =  4%     0/ 100 =  0%  38.88.197.162
                                0/ 100 =  0%   |
 18  114ms     5/ 100 =  5%     1/ 100 =  1%  border1.po1-40g-bbnet1.lax010.pnap.net [216.52.255.13]
                                0/ 100 =  0%   |
 19  114ms     4/ 100 =  4%     0/ 100 =  0%  66.150.148.1

トレースを完了しました。

2014-04-21

第4回elasticsearch勉強会

第4回elasticsearch勉強会 - elasticsearch勉強会 | Doorkeeperのログ

発表スライドは第4回Elasticsearch勉強会を開催しました。#elasticsearchjp - @johtaniの日記 2ndにまとまってる。超助かる。

株式会社シーマーク 大谷 純 @johtani タイトル:「アナライズ処理の仕組みとクエリDSL

  • elasticsearchのcharFilter, tokenizer, tokenFilterの適応順番
  • そもそもanalyzeされるクエリとそうじゃないクエリがある。どれが適応されるクエリ
  • apache solrのanalyze画面のように、analyzeの仮定を表示するプラグインの紹介

株式会社マーズフラッグ R&D部 やまかつ さん @yamakatu タイトル:「elasticsearch-hadoopを使ってごにょごにょしてみる」

  • 本質的にはhadoopストレージとしてelasitcsearch上のデータを扱えるようになる
    • hadoop上のデータを検索できるようになる、ではない。注意
    • hadoop上のデータをelasticsearchにwriteするだけっていうのもできる

株式会社アットウェア 佐竹雅央さん @madgaoh 河村康爾さん @ijokarumawak タイトル: 「CouchbaseとElasticsearchが手を結んだら」

  • couchbase - couchdbではない
    • メモリ+ストレージハイブリッド・キーバリューストア
    • スケールアウトなども考慮されてる
    • ただし、現状データ横断的な処理は苦手
  • couchbaseのcross data center rsync...? の機能を使って、elasticsearchをcouchbaseに見せかけるプラグインを使用して、elasticsearchをさもcouchbaseの1クラスタのように見せる
    • ただ、RDB, couchbase, elasticsearchの3構成でcouchbaseはDB
  • ちなみに、以下のように統一していく流れ
    • 外部からElasticSearchへ流し込むプラグイン → River Plugin
    • Elasticsearchから外部へ転送するプラグイン → Transport Plugin

Wantedly, Inc 内田誠悟さん @spesnova タイトル:未定

  • 詳細忘れた。この会社の知名度がすごく高くて驚いた

LTその1 スクリプト使ってみた

LTその2 basistechさんのプラグイン宣伝

2014-01-12

git-trash-branchを作ってみました

gitでブランチを操作しながら開発してるとき、よくブランチを完全削除ではなく一旦ゴミ箱的な場所に移したいと思うケースがありました。

gitのブランチ削除は復元する方法がないため、もし削除してしまったブランチをもとに戻す場合は泣きながらreflogでハッシュ番号を漁る必要があります。しかし、それを恐れて無駄なブランチを削除しないと使わないブランチがどんどん増えて、どれが今開発してる(生きている)ブランチなのかわからなくなってきます。

現状ではそういった「たぶんいらないブランチ」はgit branch -mオプションを利用してtrash/というプレフィックスをつけていました。これにより今使ってるブランチといらないブランチをはっきりと区別することができます。ただ、branchAをtrashへ移動させたい場合、

$ git branch -m branchA trash/branchA

とbranchAという文字列を2度打つ必要があり面倒でした。加えて、全体的にコマンドが長いです。

そこで、gitのサブコマンドを自作して以下のように打てるようにしました。

$ git trash-branch branchA

ソースコードインストール方法、使い方はbigwheel/git-trash-branchを参照してください。

今回はシェルスクリプトのコードに対してrspec単体テストを書くという自分では初めての挑戦をしています。これ、やってみるとかなり良かったです。ruby自体がかなりコマンド実行と親和性が高いため、両方書ける人ならかなり直感的に書くことができます。

あとやり残したこととしてはインストールをchefで書いて、chef-applyからコマンド一発でできるようにすることぐらい。

2014-01-11

gitサブコマンドの書き方備忘録

gitのサブコマンドを書こうとしてもはや何度目かわからないshell scriptの書き方再勉強をしていた。不毛なので、ここに関連URLを残しておく。