前回、前々回でバッファが重要みたいなことを言いました。
個々のソフトでバッファサイズを調整するのは煩わしいので今度はカーネル側でやろうと思います。つーか本当の動機はvsftpdではバッファサイズの調整が出来ないっぽいからですけど・・・
/etc/sysctl.confを編集します
net.ipv4.tcp_rmem=500 1500 5000
net.ipv4.tcp_wmem=500 1500 5000
↑の2行を追加します。上が受信バッファ、下が送信バッファです多分
なんで3つの値を渡しているかはこちらを参照してください
そんで書いたらこんな感じでパラーメータを設定して下さい
sysctl -p
でおkね
まあ/proc以下をechoで飛ばして設定しても良いんですが再起動すると戻ってしまうので・・・・
2008年6月30日月曜日
自宅鯖のapache2をチューニング
Sambaの件でバッファリングが大きすぎてサーバー側で処理できなくなる→切断となっていることに気づいたのでもしかするとapache2で大きいファイルを落とすときに切れる現象も同じなんじゃないかなと思ってチューニングしてみる。
受信バッファサイズと送信バッファサイズを調整して鯖が落ちるのを止める。
俺はhttpd.confに↓を書いた。でおkだった。
SendBufferSize 4000
ReceiveBufferSize 1500
具体的にどうコネクションが切れるか検証してないけど多分こんな感じだと思う
クライアント「オラオラ・・・もっとパケット送るぜー!ウィンドサイズはでかいからなーw」
サーバー「ちょwwwおまwww待ってくれそんな処理しきれwww」
(ただいまサーバーがシーケンシャルナンバーの整理などしておりますしばしお待ちください)
クライアント「おかしいな?返事がない・・・しかたないコネクション切るか」
サーバー「ふう・・・終わったぜ!さあパケット返そうかな・・・ってコネクション切れてるしwwww」
みたいなノリだと思う
まあバッファの調整はマシンのスペックを見て調整しましょってことで
受信バッファサイズと送信バッファサイズを調整して鯖が落ちるのを止める。
俺はhttpd.confに↓を書いた。でおkだった。
SendBufferSize 4000
ReceiveBufferSize 1500
具体的にどうコネクションが切れるか検証してないけど多分こんな感じだと思う
クライアント「オラオラ・・・もっとパケット送るぜー!ウィンドサイズはでかいからなーw」
サーバー「ちょwwwおまwww待ってくれそんな処理しきれwww」
(ただいまサーバーがシーケンシャルナンバーの整理などしておりますしばしお待ちください)
クライアント「おかしいな?返事がない・・・しかたないコネクション切るか」
サーバー「ふう・・・終わったぜ!さあパケット返そうかな・・・ってコネクション切れてるしwwww」
みたいなノリだと思う
まあバッファの調整はマシンのスペックを見て調整しましょってことで
sambaで接続が切れる問題
socket options = IPTOS_LOWDELAY SO_RCVBUF=1000 SO_SNDBUF=1000
バッファリングが多すぎたみたい
低スペックなPCだとNODELAYは辛いようだ
socketオプションは↓を参照
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/socket.7.html
バッファリングが多すぎたみたい
低スペックなPCだとNODELAYは辛いようだ
socketオプションは↓を参照
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/socket.7.html
2008年6月29日日曜日
sambaを入れてみよう
aptかなんかでインストール
/etc/samba/smb.confを直そうか
[global]
unix charset = UTF-8
dos charset = CP932
display charset = UTF-8
まず↑の設定を確認unix charsetは環境に合わせてどうぞ
workgroup = MSHOME
次にワークグループを合わせて
security = share
セキュリティをshareにした。パスワード求められるとウザイので・・・
でもこれだとvistaとかだと問題になるそうです XPの場合は大丈夫らしいけど
guest account = ageftp
あとはゲストアカウントを誰にするかを決める。
[upload]
path = /var/www/upload/
available = yes
browsable = yes
public = yes
writable = yes
read only = no
create mask = 0777
printable = no
guest ok = yes
あとは適当にどうぞ
ここで別にゲストアカウントを誰々って決めなくても良いんですが、
じつはこの/var/www/uploadディレクトリはftpのanonymousログインを
許可しているのでotherのパーミッションに書き込みを与える事が出来ないのです
/etc/samba/smb.confを直そうか
[global]
unix charset = UTF-8
dos charset = CP932
display charset = UTF-8
まず↑の設定を確認unix charsetは環境に合わせてどうぞ
workgroup = MSHOME
次にワークグループを合わせて
security = share
セキュリティをshareにした。パスワード求められるとウザイので・・・
でもこれだとvistaとかだと問題になるそうです XPの場合は大丈夫らしいけど
guest account = ageftp
あとはゲストアカウントを誰にするかを決める。
[upload]
path = /var/www/upload/
available = yes
browsable = yes
public = yes
writable = yes
read only = no
create mask = 0777
printable = no
guest ok = yes
あとは適当にどうぞ
ここで別にゲストアカウントを誰々って決めなくても良いんですが、
じつはこの/var/www/uploadディレクトリはftpのanonymousログインを
許可しているのでotherのパーミッションに書き込みを与える事が出来ないのです
aptitudeのフラグの意味
ここに書いてあった
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch02s02s02.html
ちなみにAは自動的にインストールされたか動画を表すんだって
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch02s02s02.html
ちなみにAは自動的にインストールされたか動画を表すんだって
LinuxでS.M.A.R.T情報を表示する
aptかなんかでsmartmontoolsをインストール
# smartctl -a /dev/hda
これで見れるらしい↓の方が見やすいかも
# smartctl -A /dev/hda
参考サイト
項目の詳しい説明は下記のwkipedia参照
http://ja.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology
Windowsだとこんなものもあるらしい
CrystalDiskInfo
# smartctl -a /dev/hda
これで見れるらしい↓の方が見やすいかも
# smartctl -A /dev/hda
参考サイト
項目の詳しい説明は下記のwkipedia参照
http://ja.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology
Windowsだとこんなものもあるらしい
CrystalDiskInfo
2008年6月27日金曜日
Linuxでよく使われるscreenを今更使ってみた
つーわけでメモ
aptかなんかでサクッとインストールしてscreenで起動します。
まずコマンドはプレフィックスキー(コマンド前に毎回入力するキー)がいります。そんでデフォルトのプレフィックスキーはCtrl+aです。
Ctrl+a ?でヘルプ見れます。
コマンド一覧 プレフィックスキーは省略
c 新しい端末を開く
" 画面リストの表示
n 次の画面へ
p 前の画面へ
n nの端末へ移動(nは端末番号)
S 画面分割 大文字のSなのでshiftと共に押す!
\ バックスラッシュ 全てを破棄してscreenを終了
Ctrl+i ウィンド間の移動
X ウィンドウのクローズ 大文字のX!
[ コピーモードの開始 開始地点、終了地点でエンターかスペース
] ペースト
:resize -10 ウィンドのリサイズ。-10だと縮める10広げるみたいな感じ
d デタッチ
screen -r でデタッチした端末をアタッチ
screen -ls で端末一覧表示
aptかなんかでサクッとインストールしてscreenで起動します。
まずコマンドはプレフィックスキー(コマンド前に毎回入力するキー)がいります。そんでデフォルトのプレフィックスキーはCtrl+aです。
Ctrl+a ?でヘルプ見れます。
コマンド一覧 プレフィックスキーは省略
c 新しい端末を開く
" 画面リストの表示
n 次の画面へ
p 前の画面へ
n nの端末へ移動(nは端末番号)
S 画面分割 大文字のSなのでshiftと共に押す!
\ バックスラッシュ 全てを破棄してscreenを終了
Ctrl+i ウィンド間の移動
X ウィンドウのクローズ 大文字のX!
[ コピーモードの開始 開始地点、終了地点でエンターかスペース
] ペースト
:resize -10 ウィンドのリサイズ。-10だと縮める10広げるみたいな感じ
d デタッチ
screen -r でデタッチした端末をアタッチ
screen -ls で端末一覧表示
2008年6月23日月曜日
リダイレクトについて
command > hoge 2>&1
エラー出力を標準出力先と同じにするこれを使えば
$gunzip_message = qx/gunzip -f $unixtime.dat.gz 2>&1/;
↑のようにエラー出力を捕らえることも可能になる
command &> hoge
参考
http://www.fireproject.jp/feature/bash/basic/redirect-pipe.html
エラー出力を標準出力先と同じにするこれを使えば
$gunzip_message = qx/gunzip -f $unixtime.dat.gz 2>&1/;
↑のようにエラー出力を捕らえることも可能になる
command &> hoge
参考
http://www.fireproject.jp/feature/bash/basic/redirect-pipe.html
2008年6月22日日曜日
Firefoxの拡張ViewSourceWith使う時の注意点
kaoriya版vimでは便利なコマンドが用意されているよ
http://nanasi.jp/articles/vim/cmdex_vim.html
↑に書いてありました
/vim71-kaoriya-w32j/runtime/plugin/cmdex.vim
↑に置かれているので見てみると良いんじゃないでしょうか
HTMLConvertは中で2html.vimを呼んでるみたいですね
TOhtmlコマンドがあるのになんでこんなコマンドあるんだろ・・・
↑に書いてありました
/vim71-kaoriya-w32j/runtime/plugin/cmdex.vim
↑に置かれているので見てみると良いんじゃないでしょうか
HTMLConvertは中で2html.vimを呼んでるみたいですね
TOhtmlコマンドがあるのになんでこんなコマンドあるんだろ・・・
2008年6月16日月曜日
vimでマークを視覚的に表示する
http://nanasi.jp/articles/vim/showmarks_vim.html
http://www.vim.org/scripts/script.php?script_id=152
他にもマークにマッチする正規表現があるのでそれでもおkです。
たとえばaマークをTodoハイライトするには
syntax match Todo /.*\%'a.*/ containedin=ALL
を$VIM/runtime/syntax/txt.vimというファイルを作り入れておきます。
自分はtxtにそのハイライトを当てているので_gvimrcの中で
autocmd BufRead,BufNewFile *.txt setfiletype txt
を追加してファイルタイプを設定しています。
http://www.vim.org/scripts/script.php?script_id=152
他にもマークにマッチする正規表現があるのでそれでもおkです。
たとえばaマークをTodoハイライトするには
syntax match Todo /.*\%'a.*/ containedin=ALL
を$VIM/runtime/syntax/txt.vimというファイルを作り入れておきます。
自分はtxtにそのハイライトを当てているので_gvimrcの中で
autocmd BufRead,BufNewFile *.txt setfiletype txt
を追加してファイルタイプを設定しています。
2008年6月15日日曜日
aptitudeよく使うコマンドとか・・・
uでパッケージの一覧の更新
Uですべてのパッケージをアップグレード
あとは↓みて
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch01s01s04.html
コマンド一覧はこちら
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch02s01s02.html#id2533999
Uですべてのパッケージをアップグレード
あとは↓みて
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch01s01s04.html
コマンド一覧はこちら
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch02s01s02.html#id2533999
2008年6月14日土曜日
ActivePerlでyahooにメールを送ろうか
Net::SMTPモジュールを使います。ただデフォルトでauthメソッドを使おうとしてもパケットを投げてくれないので、下のモジュールを新たにppmか何かでインストールして下さい。
次にコーディングに入ります。Net::SMTPについての説明はこちらを参照してください。
メールヘッダについてはTo:だけでいいかと思ったらうまく送信できなかったので、Thunderbirdのパケットをキャプチャしたものを丸パクリします。
Dataヘッダについては何でもいいかと思いますが、一応現在時を取得する方が親切設計でしょう。どれが必要なヘッダか不要なヘッダかは面倒なので調べていません。
Message-IDですがこちらを見る限り何でもいいそうです。好きな命名規則で良いでしょう。
*参考
yahooの鯖はSMTPを拡張したESMTPで運用されています。ESMTPではグリーティングの際にEHLOコマンドを用います。(SMTPではHELOコマンド)
EHLOコマンドでは自分のホストを通知します。Thunderbirdでは
EHLO [192.168.0.6]
とグリーティングしますが、Net::SMTPでは
EHLO localhost.localdomain
とグリーティングします。まあどっちでも構いませんが、、、
http://www.atmarkit.co.jp/fnetwork/rensai/netpro06/netpro01.html
#!/usr/local/bin/perl
use Net::SMTP;
$user="??????";
$passwd="?????????????";
$maildata=<<"END";
Message-ID: <1234567890123456@yahoo.co.jp>
Date: Sat, 14 Jun 2008 09:59:39 +0900
From: uesugi
User-Agent: Thunderbird 2.0.0.14 (Windows/20080421)
MIME-Version: 1.0
To: yahoo
Subject: This Mail Make Perl
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
END
$smtp = Net::SMTP->new('smtp.mail.yahoo.co.jp',Timeout=>30,Debug=>1);
$smtp->auth($user, $passwd) or die "Auth Fail\n";
$smtp->mail('????????????????????@yahoo.co.jp');
$smtp->to('????????????????????@yahoo.co.jp');
$smtp->data();
$smtp->datasend("$maildata");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");
$smtp->dataend();
$smtp->quit;
print $smtp->domain,"\n";
$smtp->quit;
次にコーディングに入ります。Net::SMTPについての説明はこちらを参照してください。
メールヘッダについてはTo:だけでいいかと思ったらうまく送信できなかったので、Thunderbirdのパケットをキャプチャしたものを丸パクリします。
Dataヘッダについては何でもいいかと思いますが、一応現在時を取得する方が親切設計でしょう。どれが必要なヘッダか不要なヘッダかは面倒なので調べていません。
Message-IDですがこちらを見る限り何でもいいそうです。好きな命名規則で良いでしょう。
*参考
yahooの鯖はSMTPを拡張したESMTPで運用されています。ESMTPではグリーティングの際にEHLOコマンドを用います。(SMTPではHELOコマンド)
EHLOコマンドでは自分のホストを通知します。Thunderbirdでは
EHLO [192.168.0.6]
とグリーティングしますが、Net::SMTPでは
EHLO localhost.localdomain
とグリーティングします。まあどっちでも構いませんが、、、
http://www.atmarkit.co.jp/fnetwork/rensai/netpro06/netpro01.html
#!/usr/local/bin/perl
use Net::SMTP;
$user="??????";
$passwd="?????????????";
$maildata=<<"END";
Message-ID: <1234567890123456@yahoo.co.jp>
Date: Sat, 14 Jun 2008 09:59:39 +0900
From: uesugi
User-Agent: Thunderbird 2.0.0.14 (Windows/20080421)
MIME-Version: 1.0
To: yahoo
Subject: This Mail Make Perl
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
END
$smtp = Net::SMTP->new('smtp.mail.yahoo.co.jp',Timeout=>30,Debug=>1);
$smtp->auth($user, $passwd) or die "Auth Fail\n";
$smtp->mail('????????????????????@yahoo.co.jp');
$smtp->to('????????????????????@yahoo.co.jp');
$smtp->data();
$smtp->datasend("$maildata");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");
$smtp->dataend();
$smtp->quit;
print $smtp->domain,"\n";
$smtp->quit;
Debian(etch)でcpan設定
まずCPANを使う上で必要なソフトは下記のとおりです。先にインストールしておきます。
gzip,tar,unzip,make,lynx,wget,ncftpget(ncftpでインストール)
#cpan
で初回起動時の設定が入る。基本的にEnterでデフォルトの設定で問題ないと思います。
The next option deals with the charset your terminal supports. In
general CPAN is English speaking territory, thus the charset does not
matter much, but some of the aliens out there who upload their
software to CPAN bear names that are outside the ASCII range. If your
terminal supports UTF-8, you say no to the next question, if it
supports ISO-8859-1 (also known as LATIN1) then you say yes, and if it
supports neither nor, your answer does not matter, you will not be
able to read the names of some authors anyway. If you answer no, names
will be output in UTF-8.
Your terminal expects ISO-8859-1 (yes/no)?
↑のように聞かれたらnoがいいかもしれません。
そんで使えるCPAN鯖が無かった場合はftp://ftp.kddlabs.co.jp/CPAN/とかを使うといいかもです。
find `perl -le 'print for @INC'` -name '*.pm' | less
↑のコマンドでインストールされているモジュールを確認できます。
あと
cpan> m /Net::SMTP_.*/
Module id = Net::SMTP_auth
CPAN_USERID APLEINER (Alex Pleiner)
CPAN_VERSION 0.08
CPAN_FILE A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
MANPAGE Net::SMTP_auth - Simple Mail Transfer Protocol Client with AUTHentication
INST_FILE /usr/local/share/perl/5.8.8/Net/SMTP_auth.pm
INST_VERSION 0.08
↑みたいな感じでモジュール検索もできます
gzip,tar,unzip,make,lynx,wget,ncftpget(ncftpでインストール)
#cpan
で初回起動時の設定が入る。基本的にEnterでデフォルトの設定で問題ないと思います。
The next option deals with the charset your terminal supports. In
general CPAN is English speaking territory, thus the charset does not
matter much, but some of the aliens out there who upload their
software to CPAN bear names that are outside the ASCII range. If your
terminal supports UTF-8, you say no to the next question, if it
supports ISO-8859-1 (also known as LATIN1) then you say yes, and if it
supports neither nor, your answer does not matter, you will not be
able to read the names of some authors anyway. If you answer no, names
will be output in UTF-8.
Your terminal expects ISO-8859-1 (yes/no)?
↑のように聞かれたらnoがいいかもしれません。
そんで使えるCPAN鯖が無かった場合はftp://ftp.kddlabs.co.jp/CPAN/とかを使うといいかもです。
find `perl -le 'print for @INC'` -name '*.pm' | less
↑のコマンドでインストールされているモジュールを確認できます。
あと
cpan> m /Net::SMTP_.*/
Module id = Net::SMTP_auth
CPAN_USERID APLEINER (Alex Pleiner
CPAN_VERSION 0.08
CPAN_FILE A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
MANPAGE Net::SMTP_auth - Simple Mail Transfer Protocol Client with AUTHentication
INST_FILE /usr/local/share/perl/5.8.8/Net/SMTP_auth.pm
INST_VERSION 0.08
↑みたいな感じでモジュール検索もできます
2008年6月12日木曜日
pearのコマンドとか・・・
phpのライブラリ管理のpear
よく使うコマンド備忘録
pear
PEARコマンド一覧表示
pear help command_type
command_typeの説明を表示
pear list
現在インストールされているパッケージ一覧
pear list-upgrades
更新ライブラリの確認
pear upgrade package
パッケージのアップグレード前述のpear list-upgradeで出てきたPACKAGE欄を
packageに入れる
よく使うコマンド備忘録
pear
PEARコマンド一覧表示
pear help command_type
command_typeの説明を表示
pear list
現在インストールされているパッケージ一覧
pear list-upgrades
更新ライブラリの確認
pear upgrade package
パッケージのアップグレード前述のpear list-upgradeで出てきたPACKAGE欄を
packageに入れる
2008年6月8日日曜日
2008年6月7日土曜日
定期的に文章をバックアップする
なんか大事な文章を日付順にバックアップしておきたいときに書くシェルスクリプトとか・・・
#! /bin/bash
var=`LANG=C date +'%Y%m%d%a'`
cp /media/taihi1/komando.txt /media/taihi1/komando-bak/$var.txt
#! /bin/bash
var=`LANG=C date +'%Y%m%d%a'`
cp /media/taihi1/komando.txt /media/taihi1/komando-bak/$var.txt
Linux版のvim7に日本語ヘルプを入れてみる
なんかkaoriyaさんのとこに
http://www.kaoriya.net/vimdoc_j/
という日本語ヘルプがあったので落としてくるそんで解凍とかする。
解凍したものを/usr/share/vim/vim71に放り込んでも拡張子が.jaxとかなっててうまくいかない
しょうがないから拡張子を.jax→.txtにする
一括変換とかシェルスクリプトでできそうだけど分からないからPerlで書く
#!/usr/local/bin/perl
$newdir=".";
chdir $newdir or die "$newdir is not found!\n";
opendir(DIR, ".");
@file = readdir(DIR);
closedir(DIR);
@file = sort {(stat ($a))[8] <=> (stat ($b))[8]} @file;
foreach(@file){
if($_=~/^\.$|^\.\.$|^rename\.pl$/){
next;
}
if ($_=~/\.jax$/){
$moto=$_;
$_=~s/\.jax$//;
system "mv $moto $_.txt";
#print "$moto $_.txt\n";
}
# print $_,"\n";
# `mv $moto `;
}
http://www.kaoriya.net/vimdoc_j/
という日本語ヘルプがあったので落としてくるそんで解凍とかする。
解凍したものを/usr/share/vim/vim71に放り込んでも拡張子が.jaxとかなっててうまくいかない
しょうがないから拡張子を.jax→.txtにする
一括変換とかシェルスクリプトでできそうだけど分からないからPerlで書く
#!/usr/local/bin/perl
$newdir=".";
chdir $newdir or die "$newdir is not found!\n";
opendir(DIR, ".");
@file = readdir(DIR);
closedir(DIR);
@file = sort {(stat ($a))[8] <=> (stat ($b))[8]} @file;
foreach(@file){
if($_=~/^\.$|^\.\.$|^rename\.pl$/){
next;
}
if ($_=~/\.jax$/){
$moto=$_;
$_=~s/\.jax$//;
system "mv $moto $_.txt";
#print "$moto $_.txt\n";
}
# print $_,"\n";
# `mv $moto `;
}
登録:
投稿 (Atom)