ひよっこ。

I want to…

Posts Tagged ‘RHEL4’

RHEL4にGraphvizの導入する

Posted by hikaruworld : 2008 12月 9

Graphviz をRHEL4にインストールする際の導入に関しての備忘録。

インストール

Trac0.11のチケットのワークフローをカスタマイズする必要があった。
それに関連して、後々確認しやすいようにgraphvizのインストールも行う。

  1. ここからRPMをダウンロードし、rpmコマンドでインストール(コマンドは省略)。

動作確認

Graphviz チュートリアル を参考に、簡単なサンプルを動かしてみる。

  1. sample.dotというファイルを作成して以下を書く。

    digraph sample {
    alpha -> beta;
    alpha -> gamma;
    beta -> delta;
    }

  2. コマンドラインで以下を実行する(RPMインストールなのでパスは通っていることが前提)。

    dot -Tgif sample1.dot -o sample1.gif

トラブルシューティング

Format: “XXX” not recognized.

フォーマットエラーで以下のようなエラーが発生する。

Format: “gif” not recognized. Use one of: canon cmap cmapx cmapx_np dia dot eps fig hpgl imap imap_np ismap mif mp pcl pic plain plain-ext ps ps2 svg svgz tk vml vmlz vtx xdot

ここ と同じようにgraphviz-gdをインストールする事で対応可能。

user gviz does not exist – using root

ユーザが存在しないエラー?

RPMインストール中に発生した。以下はログ。

Preparing… ########################################### [100%]
1:graphviz-gd 警告: user gviz does not exist – using root
警告: group gviz does not exist – using root
警告: user gviz does not exist – using root
警告: group gviz does not exist – using root
########################################### [100%]

警告のようだし、using rootといっているので無視する。原因は未調査。

Error: Could not find/open font

フォント参照エラーのようで、以下のようなエラーが出る。
一応画像は出力されており参照も可能だが、日本語が文字化けするみたいだ。

Error: Could not find/open font

ここ を参考に修正してみる。
フォントが参照できてい状態なので、一番強引な方法ではあるが、fontnameにフォントファイルのパスを指定した。
fontpathの設定ではなんだかうまく行かなかった。

digraph sample {
node [fontname=”/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf”];
alpha -> beta;
alpha -> gamma;
beta -> あいうえお;
}

OK.

TracWorkFlowsとGraphviz

TracのTracWorkflowはGraphvizを用いて書き出すスクリプトが準備されている。

詳細はかおるんダイアリーが詳しい。
ここでは簡単な手順のみ。

  1. workflow_parser.pyを探す。
    • ソースからTracをインストールした場合は、%TRAC_SRC%/contrib/workflow/workflow_paser.py にあるはず
  2. workflow_pyser.pyを実行時に出力したいプロジェクトのtrac.iniを指定してGraphvizのworkflow.dotに書き出す。

    python workflow_parser.py trac.ini > workflow.dot

  3. 後は、いつものごとく以下のような感じで書き出す。

    dot -Tpng workflow.dot > workflow.png

広告

Posted in server | タグ: , , | Leave a Comment »

VirtualPCにRHEL4をインストールしてディスプレイの設定を直し忘れる。

Posted by hikaruworld : 2008 11月 16

VirtualPC2007RHEL4をインストールするときに
ディスプレイの設定をミスると(ってかデフォルトのままだと)
ログイン画面が横長になってまともに参照できなくなってしまう。

この件、よく知られている話なんだけど、いつも修正方法を忘れてしまうのでメモしておく。
※いまだに、Linuxになれない自分がいる。

  1. 起動画面でEnter
  2. キーボードでaを押す。
  3. <<space>> 3 でランレベル3で起動(CUIモード)
  4. /etc/x11/xorg.conf内の以下の設定を編集

    DefaultDepth 24

    から

    DefaultDepth 16

  5. reboot

Posted in OS | タグ: , , | Leave a Comment »

エフェメラルポートのバッティング

Posted by hikaruworld : 2008 11月 13

RHEL4上で起動しているTomcatをデフォルトの8080ポートで起動しようとしたら、唐突に以下のエラーで落ちた。

致命的: エンドポイントを初期化中のエラーです
java.net.BindException: Address already in use: JVM_Bind:8080

エラー自体は別段珍しいものではない。Tomcatのプロセスがつかみっぱなしになっているんだろう。
ただ昨日まで起動していたものが、突然起動しなくなるとはどういうことだと思いつつ、
とりあえずnetstatしてみる。

netstat -n –tcp | grep IPアドレス

必要な箇所だけ抜粋。
確かに使っているようだ。でも5432というと。。。

tcp 0 0 10.131.229.25:5432 10.131.229.25:8080 ESTABLISHED

続いて、lsof

lsof -i:8080

またまた、該当箇所のみ

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
java 19463 root 18u IPv6 3159971 TCP hostname:8080->hostname:postgres (ESTABLISHED)

…変なものが見える。
PostgreSQLとのコネクションを張るのに8080を使っているようだ。

Tomcat上のアプリとDB間はパフォーマンスを考慮して、コネクションプーリングを持ちいているので、
Tomcat起動時にアプリ⇔DB間で、複数コネクションを複数のTCP接続で確立させ、
その際にコネクション分のポートがPostgreSQLによって確保されるわけだ。
おそらくこの際のポートの確保は、OSで設定されているエフェメラルポートから適当に割り振られるようだ。

PostgreSQLのエフェメラルポートの割り当てがどのように行われるかわからないが(挙動的にインクリメントっぽい)、
このコネクション確立時のポート確保とアプリケーションの起動ポートがバッティングする可能性があるようだ。

# この理解であっているのかな?あとで図でも書いてみるか。。

色々検索してみたが、サーバ構築時にエフェメラルポートの設定を考慮する必要があるのは周知の事実らしい。
すみません、存在すら全く知りませんでした。

RHEL4の場合は、以下のように設定すれば任意にエフェメラルポートを設定可能なようなので、
/etc/sysctl.confnet.ipv4.ip_local_port_rangeを以下のように追記した(要再起動)。

net.ipv4.ip_local_port_range = 20000 61000

上限値はメモリに依存するらしい。
なお、RHEL4のデフォルト設定は1024-65000(最大値は忘れた、確かこのあたりだった気がする)らしいが
この件に関するRHELのドキュメントが見つけられなかった。

探し方が悪い???
とりあえず検証してみて期待通りの動作をしているところまでは確認したが、気になるところである。

P.S
次のエントリーで書くが、このバグはコネクションプーリングのdestory漏れという、
あほなミスと重複して発生頻度が上がっていたようだ。(汗

参考リンク:

Posted in OS, Uncategorized | タグ: , , | Leave a Comment »