Posts tagged Linux
MySQLクイックチューニング
1月 19th
mysqltuner実行画面
mysqlのパラメータチューニングをある程度おおざっぱに行うスクリプトを発見。 一言で言えば、10分である程度チューニングできる! http://blog.mysqltuner.com/
使い方は至って簡単、ダウンロードして実行するだけ。 実行すると、MySQLへのログインIDとパスワードが聞かれる。入力すると、MySQLのステータスや変数、物理メモリ容量をチェックされ、その環境に合ったパラメータを提案してくれる。
% wget http://mysqltuner.com/mysqltuner.pl % perl mysqltuner.pl
適当に運用している環境ではすごい楽。デフォルトのmy.cnfでは物足りないけど、パラメータチューニングをExcelを使って統計情報を元にチューニングするのは面倒という人向け。 24時間以上運用していないと統計値が収束しないので、ある程度運用してから実行した方がいいです。
MySQL InnoDB, Linux and SSD tuning
11月 20th
松信 嘉範さんによるhbstudy#5発表資料「Linux/MySQLサーバーのパフォーマンスチューニング」 これを読んで、追加で行ったチューニングや新しいことメモ。さすが中の人だけあって詳しい。
1:1InnoDBで。 TEXTなどのデータを別テーブルへ。 よく検索される列ごとにテーブルをまとめるとbuffer poolを効率よく使える。
物理メモリが足りなくなったときの挙動ファイルシステムキャッシュを減らす。(100の場合、プロセスをスワップアウト) # echo 0 > /proc/sys/vm/swappiness
永続化 # echo ‘vm.swappiness=0′ >> /etc/sysctl.conf
mtstatvmstatの高機能版かな。数値がhuman friendlyで、カラーリングされている。 (トップ画)
git memo
9月 12th
手元のgitメモが溜ってきたので放出!
参考書gitは、この本を一通り読んで理解しました。 Web上の解説だと断片的だし、gitの動作モデルが的確に解説されているページを見つけられませんでしたが、この本ではgitの動作モデル、内部での処理モデルをわかりやすく解説してくれています。英語です。
.gitconfig俺の設定
% cat ~/.gitconfig
[user]
name = Yuki Matsukura
email = 秘密@秘密ドメイン
[color]
ui = auto
diff = auto
status = auto
branch = auto
interactive = auto
Subversion vs git
subversionへの不満が爆発。
- 2年前頃からtortoiseSVNでupdate,add,commitをしていると.svnディレクトリ内が壊れるようで、add,update,commitが一切できなくなる。回復するためには再チェックアウトするしかない。(過去2年で、かれこれ10回ぐらい起きた。)
- ファイルが多くなるとcommit,updateがすごい遅い。(1,2分かかる)
- チェックアウトすると小さいファイルを大量に作る→Disk IOが激しい
gitが良さそう。
- 軽い
- 大規模プロジェクトで利用されている
Web上の資料読んでもモデルが理解しづらいのでWeb+DB PRESS Vol.50を読むのが一番!
Web+DBはあまり深く書いていないので、運用しているとかゆいところに手を出そうとしても手が出せない。もっとしっかり理解したい場合は、洋書だけどVersion Control with Gitがいい。
TIPS あるコミット分だけ反映% git fetch % git-cherry-pick 0e736c1eff177f143ae55ab8971bae6e5753cdb6ワークツリーの変更を取り消し
% git checkout -- path/to/file直前のコミット取り消し
% git revert HEADmergeされていないbranchのリスト
% git branch --no-mergedあとからbranchを作る
% git branch new-branch % git reset --hardCVSやsvnのkeywordパラメータのように、$Id:$を自動的に置換する設定
% echo "* ident" >> .gitattributesremote repositoryのbranchを消す
空のブランチをremoteにpushすればいい。
% git push origin :20090918-sitemap
git fetchするだけでは、remoteの消えたbranchをローカルのtracking branchに反映してくれないので、 ローカルのtracking branchも消す
% git branch -d -r origin/20090907-sitemapあとからブランチを作る
小さな修正だと思って、masterをいじっていたら実は根が深く、branchを作っておけば良かったなぁと思ったときの対処法
% git commit More >
andLinuxの起動が恐ろしく速い
7月 23rd
30秒弱の動画なので見てみてください。 ブートからログインプロンプトが表示されるまで10秒かかってないです。Windows上でちょちょいと開発するにはandLinuxで事足りる。
いままでは、Linux上で動かすプログラム開発するときはVMwareをわざわざ起動していたけどこれでいいや。
andLinux、意外とすごくて、cygwinと同じレベルでの仮想化と思っていたらもっと低いレイヤで仮想化して居るみたい。 i386のUbuntuバイナリがそのまま動く。
なんでかと思ったら、kernelが頑張っててくれたのね・・・
PHP 5.2.10 configure error
6月 20th
PHP5.2.10が出たので開発環境へインストール。
5.2.8と同じオプションでconfigureしたのにこんなエラーが出た。
% ./configure --enable-mbstring --enable-soap --enable-zend-multibyte --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-curl --with-curlwrappers --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-mcrypt
.....
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl -dir>/include/curl/
環境は、
# cat /etc/issue Debian GNU/Linux 5.0 \n \l
headerファイルインストールして解決
# aptitude install libcurl4-gnutls-dev
cronによるコマンド実行
5月 15th
疑問:crontabへ同時刻に実行するコマンドを書いたときに、各コマンドの終了を待って次に実行するのか?それとも、サブプロセスで実行するのか?
(=同期実行か、非同期実行か?)
答え:非同期実行。
補足:同期実行させたいときは、こんな感じ。
33 17 * * * /home/matsu/sleep.sh ; /home/matsu/sleep.sh
UnixBench (linux, unix benchmark software)
1月 20th
お手軽にLinuxのベンチマークを行うソフトウェアを紹介する。
UnixBench – a fundamental high-level Linux benchmark suite, Unixbench integrates CPU and file I/O tests, as well as system behaviour under various user loads
以下、実行方法。Cent OS 4.7で実行。 オプション無しでRunを実行すると、多数のテストを10回繰り返すため、かなり時間がかかる。 (rootで実行する必要ないけどね。。。)
# cd /tmp/ # wget http://www.tux.org/pub/tux/benchmarks/System/unixbench/unixbench-4.1.0.tgz # tar zxvf unixbench-4.1.0.tgz # cd unixbench-4.1.0 # make # ./Run
お手軽にやるには、以下。 一部のテストを1回だけ行う。
# ./Run -1 index
どうやら、topを見ていると1コアしか使っていないみたい。
RCSの罠
9月 16th
なんとまぁ、RCSに足下すくわれてしまったよ。
以下の一連の操作の最後で、co -l をしているのだが、その際にアラートを出してほしいのに、出してくれなかった(T T
# ci -u -m'modified something' /etc/sync.sh # vi /etc/sync.sh 編集して、強制保存。 # co -l /etc/sync.sh /etc/RCS/sync.sh,v --> /etc/sync.sh revision 1.12 (locked) done
言葉で説明すると、
- チェックイン
- 本当は編集してはいけないのに、ファイルを編集して強制上書き保存。この際にファイルのwrite権限は無い
- チェックアウト。チェックインしたときとファイルの内容が変わっているから、にアラートを出してほしい!
やられました。
viでwq!(w!)は使わないようにしましょう。q!はOK。
OpenSSLコマンドメモ
8月 26th
最近のコメント