2016年11月19日土曜日

SubVersionのチェックアウトが異様に遅いときに確認すること。

もう21世紀にもなってSubVersionかよ。と少々うんざりするのですが、
ところがどっこい、しぶとく生き残っているというか、バージョンが古すぎてもはやどこにも移行できない負の遺産と化している現実があったりなかったりします・・・


そんなSubVersionですが、最近諸事情があって再構築したのですが、動作試験段階でチェックアウトが異様に遅い。という症状に悩まされたので、ここに記録しておきます。


まず、SubVersionのチェックアウトが異様に遅い原因として、

SubVersionが1.8以上であればデフォルトの転送モードがBlukからSkeltaに変更になったのが原因かもしれません。参考:SVNサーバ1.8、チェックアウト等でChecksum mismatch error発生時の対応

次に、SubVersionがRedmine認証になっている場合で、RedmineがLDAP認証だった場合、SubVersionサーバ側にAuthen::Simple::LDAPモジュールが必要になります。
参考:Redmine.pm設定メモ
Redmine.pm内部で、Authen::Simple::LDAPモジュールが使えれば読み込むようになっているのですが、パスの問題か何故か読み込まれず、Redmineの内部ユーザでテストしていた時は問題なかったのに、LDAPユーザになるとチェックアウトするファイル毎に認証に行くらしく、タイムアウトまで待たされる。という事がありました。
どうも、Redmine.pmでは、最初MySQLを参照し、該当ユーザがLDAP認証であれば、LDAPモジュールを使って、LDAPサーバに認証しに行きます。
なので、LDAPサーバにIP制限をかけている場合、SubVersionサーバからLDAPへ問い合わせが行くので許可する必要があります。これも地味にはまり、数日帰れない日々を過ごしました(涙

最後に、RedmineのMySQLサーバの応答が遅い。というのがあります。
これは意外に盲点で、通常のRedmine使用時は問題がないのに、何故かRedmine.pmから繋ぎに行くと、応答が異様に遅い。という事があります。
そして、大抵RedmineサーバとMySQLは同居していたりします。
しかも、MySQLがスロークエリを出すほど詰まっている訳でも、負荷が高い訳でも無く、とにかく応答が遅いのです。
最初CPANでインストールされるライブラリが古いのが原因か?とか思いましたが、どうも違うようです。

おそらくMySQLのバージョンの問題かネットワーク的な問題だと思いますが、切り分け方法として、SubVersionでBASIC認証もしくは認証なしなど、Redmine認証以外でチェックアウトを行ってみて、速度が出ればMySQLサーバからの応答が遅いのが原因の可能性が高いです。

解決法としてMySQLのバージョンを5.6にしたり、MySQLのキャッシュ割り当てを見直したり、遅延するようなネットワーク的な問題がないかをチェックします。

検証目的であれば、SubVersion内にMySQLをインストールし、RedmineのMySQLからdmpをインポートし、ローカルのMySQLで認証をかけてみて、それでも遅い場合は他に原因がありますが、それで改善される場合、ネットワーク的な問題の可能性大です。

以上、二週間ほど寝れない、帰れない日々を送ったサバカンからでした。

0 件のコメント:

コメントを投稿