日別アーカイブ: 2011年3月4日

RTX1000設定 – sshが切れる/NATテーブル溢れ

 前から気になっていたことなんだけど、RTX1000ルータでマスカレード使用時にsshが切れる。 使用中でも切れる。 サーバとクライアントに10秒KeepAlive設定をしても切れる。
 大体、ローカルサーバに入りっぱなしなので、サーバネットワーク側ルータを通って外部に繋いでいるので特に問題なかったのだが、ちょっと調べてみたら、コマンドレファレンスに

nat descriptor masquerade rlogin ディスクリプタ番号 on/off

って言う設定項目があって、これのデフォルト値はoffなんだけど、マスカレード環境でsshやscpを使う場合にはこれをonにするよう書いてあった。
てことで、nat descriptor masquerade rlogin 1 onと書いてやったが、やっぱり切れる。
 んー、Wiresharkとかで通信を覗かないとダメかなぁ。

 後は、NATテーブルがあふれる症状。 デフォルトでマスカレードのTTLが900秒もあるので、Linuxとかのイメージを落とすときにtorrentを立ち上げたりすると、NATデーブルがぐっちゃぐちゃになって落ちる(RTX1000では、NATテーブルは1000件しか保持できないので、FINパケットをしっかりと送ってくれないホストと通信していると結構簡単に溢れる)

nat descriptor timer ディスクリプタ番号 秒数

この設定を使ってnat descriptor timer 1 300とバッサリ短縮してやったが、torrentの接続試行数が多く、まだ重めなので、プロトコル・ポートオプションを指定して、nat descriptor timer 1 protocol=tcp port=10080 60の設定を入れて、torrentの受け入れポートTCP:10080のTTLを60秒に切り詰めたらCPU負荷50%程度で落ち着くようになった。

(2114)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

SSL設定 – 関連コマンド

SSL証明書を取得するのに、作ったCSR(証明書要求)の中身が間違っていないか確認したい場合。

openssl req -in /etc/pki/tls/certs/hoge.csr -text

これで、CSR作成時に入力した内容が表示される

受け取った証明書の中身を確認する場合は

openssl x509 -in /etc/pki/tls/certs/hoge.crt -text

一般的にこれで表示できる。 先のコマンドは、タイプにreq(csREQuest)を指定していて、今回はx509(X509証明書)を指定している。 別の形式の証明書が送られている場合は、そのタイプにあわせる。

(157)

カテゴリー: サーバ設定 | コメントをどうぞ

MySQL de ビュー

 DBMSのビュー機能って言うのは、簡単にいえばSELECT文でテーブルの複製のようなものを構築する機能。

例えば、
orderテーブル

id
item_id
unit

itemテーブル

id
name
price

みたいなテーブルがあって、ビューを

CREATE VIEW order_view AS SELECT order.id, name, unit*price as total_price FROM order, item WHERE order.item_id = item.id

の様に定義しておくと、id, name, total_priceを持つビューができる。
 ビューはテーブル同様、 SELECT * FROM order_view の様に処理できる。

 CREATE TABLE ~ SELECT ~形式でテーブルを作ると似た結果になるが、CREATE TABLE ~ SELECT ~では、CREATE TABLEしたタイミングの情報がテーブルに保持されるのに対して、ビューはビューに対してクエリが投げられる度に、AS~の文を実行してデータを取得する。
 よく使う取得形式について、SELECT *で済ませる様に定義したり、制限ユーザにテーブル全項目ではなくカラムを限定してビューとして提供したり、内部構造の変更を吸収するレイヤーとして使うことができる。

 便利に思えるビューではあるが、色々と制限もある。
 例えば更新系クエリ(INSERTUPDATE)は、レコードが一意に元テーブルのレコード・カラムを特定できる事が最低条件である。
 先に示した定義の場合、total_priceunitpriceの演算により求められるカラムであり、total_priceが元テーブルにどのような値を与えるか不定であるから更新できない。
手の込んだ構造のビューは基本的に更新できない、見る(view)ためだけの物であると考えたほうが良い。
 また、ビューにはインデックスを設定することもできない(クエリを投げた段階でSELECTしてデータを取得するので、SELECT後にインデックスを構築して検索したとしても、コストが増えるだけ)ため、パフォーマンス的に弱いし、集計操作などにも癖がある。
 パフォーマンス制限について、一回の接続で繰り返し同じビューを利用するなら、ビューではなく、一時テーブル(CREATE TEMPORARY TABLE ~)を接続するたびに構築した方が高速な事もある(接続中はマスタの変更は反映されないし、更新系は結局、元テーブルに投げなければならないが)

(94)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP], MySQL | コメントをどうぞ