きぬろぐ
久しぶりにProFTPdの設定を行ったときに調べたことをメモ。
ProFTPdではFTPクライアントからPASVコマンドが送出された際に、クライアントに返却するポート番号を特定のレンジから選択する「PassivePorts」という設定項目があります。コレを使うことでクライアントに返却するポートを49152-65534に絞ることも出来るというもの。
ただし、設定したポート範囲でポートオープン出来ない場合は、Kernelでポート選択をしてもらった上でログに書き出すとのこと。実用性を考慮すればまぁこうなりますか・・と思った次第です。
OpenLDAP2.4に対して同時接続数を増やすテストを行っていたところ、以下のエラーがログに出力されました。
「Unable to allocate memory for transaction detail」
何だ?これ。と思ってしらべていたら、Oracleのサイトに以下の情報が。
Berkeley DB occasionally returns the error: "Unable to allocate memory for transaction detail". What does that mean?This error means the maximum number of active transactions configured for Berkeley DB has been reached. The Berkeley DB environment should be configured to support more active transactions. When all of the memory available in the database environment for transactions is in use, calls to being a transaction will fail until some active transactions complete. By default, the database environment is configured to support at least 20 active transactions. For more information see the "<a href="http://www.oracle.com/technology/documentation/berkeley-db/db/programmer_reference/txn_config.html">Configuring transactions</a>" section of the Berkeley DB Reference Guide.
BerkeleyDBに対して設定されたActiveトランザクション数の最大値に達したとのこと。参照の試験しかしていないのにおかしいな・・・
とりあえずDB_CONFIGファイルのset_lg_regionmax, set_lg_bsizeを倍にしたら回避できた。
#set_lg_regionmax 262144 #set_lg_bsize 2097152 set_lg_regionmax 524288 set_lg_bsize 4194304
参照だけでもトランザクションを使うのでしょうかね。
JMeterで高負荷をかけたい場合
投稿者: kinusati, カテゴリー: Linux
負荷測定ツールにOSSのApache JMeterというものがあります。かなり汎用的でつぶしがきくよいツールで、私もよく使います。JMeterについては以下の資料がよくまとまっています。
で、負荷をかける場合にはそのサーバの限界性能がどこかを探るケースが存在しますが、クライアント側のスペック不足やシナリオの作成方法が原因で負荷をかけきれないというケースがあります。スペック不足はともかくとして、シナリオ作成の方法がまずいことで計測結果が不十分になることはかっこわるいので、私が気がついた対処方法をまとめます。
ループはループコントローラで書け!
負荷をかける場合に、ユーザ1 – ユーザ10000迄のデータに連続してアクセスしたいケースがあったとしましょう。JMeterでこれを実装するには「While Controller」と「ループコントローラ」を利用する方法があると思います。
While Controllerを利用した方法)
ループコントローラを利用した方法)
While ControllerでJavascriptを利用して変数評価を行う場合、非常に負荷が高くなるようで、ループコントローラと比較して数十分の1程度しか負荷がかけられなくなった事もあります。書き方は要注意ですね。
While Controller + Javascriptでループは回すなって事ですね。
計測時にリアルタイムでリスナーの統計レポート、結果をツリー表示、グラフ表示等は使うな!
JMeterでは各種リスナーが充実していて、エラー率・スループットが一目でわかる統計レポート・グラフ表示機能等が存在します。
しかしこれらの機能を負荷計測と同時に使用すると、これらの処理自体に負荷がかかる模様です。結果十分な負荷をかけられないという事も。
対策は、リスナーの「シンプルデータライタ」を利用することです。シンプルデータライタは計測時にログ(jtl)をとることだけ行いますので、負荷はあまりかかりません。
統計レポート・結果をツリー表示・グラフ表示で見たい場合は計測後にこれらリスナを登録し、計測ログ(jtl)を読み込ませればいいんです。これで計測時には十分な負荷をかけることが出来、結果も後で参照出来ると。
計測時にはリスナーの「シンプルデータライタ」を利用しろ!グラフ表示等は後で読み込ませて結果を確認しろ!という事ですね。
JMeterを使いこなすにはまだまだノウハウが必要ですね。勉強になります。
OpenLDAP 2.4のチューニングについて調査していたら、日本LDAPユーザ会にいい資料がありました。
これは、便利。早速参考にさせて頂きます。
ところで、LDAPの負荷をかけるツールには私の知る限り二種類あります。
- SLAMD
- Apache JMeter の LDAP Extended Request/LDAPリクエスト
どっちがいいんですかね。SLAMD使ったこと無いからよくわからんな・・・またいつか調べましょう。
RHELのサブスクリプションって・・
投稿者: kinusati, カテゴリー: Linux
ちょっとRHELのサブスクリプションについて調べることがあったので。
レッドハット サブスクリプションよくある質問
その中の以下一節。
質問:「なぜRed Hat® Enterprise Linux® のサブスクリプションを全てのシステムのそれぞれにつき購入する必要があるのですか?」 答え:Red Hat のサブスクリプションは、Red Hat が提供する商用サービスです。内容は次の通りです。 1. ハードウェア及びソフトウェアのプロバイダが自社製品との統合性をテストし、当該プロバイダによりその統合性が認証されたソフトウェアを提供する 2.Red Hat Network 経由のソフトウェアのアップデートとアップグレード 3. 電話やオンラインにより提供されるサポート 4. 知的所有権侵害の申立が為された時における保護
サブスクリプションっていうとアップグレード権・サポート権と思っていたけど、
「1. ハードウェア及びソフトウェアのプロバイダが自社製品との統合性をテストし、当該プロバイダによりその統合性が認証されたソフトウェアを提供する」というのには驚きがありました。RHELを利用することに対してもサブスクリプションが必要なんですね。ふむ。
バウンスメールのバウンス理由を分析する方法を検討する必要があったので調査したところ、bouncehammerなるオープンソースベースでのバウンスメール分析ツールがありました。
Perlベースでカスタマイズも出来そうなので、よさげですね。全部で7000行程度だし。
LinuxのHAソリューションとして、お金をかけずに異なるサーバ間でハードディスクミラーを行うソフトウェアにdrbdというものがあります。
今回足下サーバ(CentOS 5.4 x64)にdrbdを入れてみたので、そのメモをWikiにまとめました。
http://wiki.kinusati.net/index.php/Linux:CentOS5%28×64%29:install:drbd83
かなり使いやすいので、びっくりですね。ストレステストも行ってみましたが安定していました。これは使えますね。
centos 5.3にアップグレード後、yum updateが失敗する。pythonのエラーも出る・・
投稿者: kinusati, カテゴリー: Linux
yum update のエラー内容
CentOS 5.3 x64にアップグレード後、yum updateしようとしたら、以下のpythonのエラーが出ます。
--> Finished Dependency Resolution libxml2-python-2.6.26-2.1.2.8.i386 from updates has depsolving problems --> Missing Dependency: /usr/lib/python2.4 is needed by package libxml2-python-2.6.26-2.1.2.8.i386 (updates) libxslt-python-1.1.17-2.el5_2.2.i386 from installed has depsolving problems --> Missing Dependency: /usr/lib/python2.4 is needed by package libxslt-python-1.1.17-2.el5_2.2.i386 (installed) gamin-python-0.1.7-8.el5.i386 from installed has depsolving problems --> Missing Dependency: /usr/lib/python2.4 is needed by package gamin-python-0.1.7-8.el5.i386 (installed) Error: Missing Dependency: /usr/lib/python2.4 is needed by package gamin-python-0.1.7-8.el5.i386 (installed) Error: Missing Dependency: /usr/lib/python2.4 is needed by package libxslt-python-1.1.17-2.el5_2.2.i386 (installed) Error: Missing Dependency: /usr/lib/python2.4 is needed by package libxml2-python-2.6.26-2.1.2.8.i386 (updates)
で、よく調べてみると、以下ページに対策が書いてありました。
http://d.hatena.ne.jp/dink/20090819/1250641214
とりあえず、以下コマンドを実行して対応完了!
# yum clean metadata
RHEL 5.3(x64)環境でASMを検証するためOracle Database 11g Release 2 Grid Infrastructureをインストールするとリンクエラーが発生して、インストールが失敗します。Oracle Database 11g Release 2は無事インストールできるのだが・・・
切り分けのためにCentOS5.2でOracle Database 11g Release 2とOracle Database 11g Release 2 Grid Infrastructureをインストールしたらエラーが出ずにばっちり動く・・・意味不明ですよ。
とりあえず検証することが目的なので、CentOSを利用することにした。
日本のサイトではまだですが、米国のOracleサイトではOracle 11gR2がリリースされています。
http://www.oracle.com/technology/index.html
早速RHEL5.3(x64)にインストールしてみました。これから動作確認です。
順次以下Wikiページに導入メモをまとめていきますね。



