FREE、TOPなどでもシステム状況を把握して問題解決やリソースのプランニングが可能だが、
他にもいくつか参考になるコマンドがあるのでメモ。

CPU使用率TOP10
ps auxw | sort -k3 -nr | head -n 10
cpu利用率

MEM使用率TOP10
ps auxw | sort -k4 -nr | head -n 10
mem利用率

パフォーマンス確認に便利なdstat
Usage: dstat [-afv] [options..] [delay [count]]

インストール
[root@ip-xx-xxx-xx-xxx ec2-user]# yum install dstat
Loaded plugins: fastestmirror, priorities, security, update-motd
Loading mirror speeds from cached hostfile
* amzn-main: packages.ap-northeast-1.amazonaws.com
* amzn-updates: packages.ap-northeast-1.amazonaws.com
amzn-main | 2.1 kB 00:00
amzn-updates | 2.3 kB 00:00
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package dstat.noarch 0:0.7.0-1.5.amzn1 will be installed
–> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================
Package Arch Version Repository Size
=======================================================================================
Installing:
dstat noarch 0.7.0-1.5.amzn1 amzn-main 182 k

Transaction Summary
=======================================================================================
Install 1 Package(s)

Total download size: 182 k
Installed size: 660 k
Is this ok [y/N]: y
Downloading Packages:
dstat-0.7.0-1.5.amzn1.noarch.rpm | 182 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : dstat-0.7.0-1.5.amzn1.noarch 1/1

Installed:
dstat.noarch 0:0.7.0-1.5.amzn1

Complete!
[root@ip-xx-xxx-xx-xxx ec2-user]#

dstat –top-bioで最もブロックI/Oしているプロセス確認。
dstat –top-ioで最もI/Oが多いプロセスを確認。

[root@ip-xx-xxx-xx-xxx ec2-user]# dstat --top-bio
—-most-expensive—-
block i/o process
init 66k 726B

[root@ip-xx-xxx-xx-xxx ec2-user]# dstat --top-io
—-most-expensive—-
i/o process
bash 82k 1351B
sshd: ec2-u 146B 248B
sshd: ec2-u 78B 168B
sshd: ec2-u 78B 168B
sshd: ec2-u 78B 168B
sshd: ec2-u 78B 168B
sshd: ec2-u 78B 168B

dstat –tcp でTCPコネクション確認
dstat –net でネットワーク確認

[ip-xx-xxx-xx-xxx]#dstat --tcp --net

net状態

[root@ip-xx-xxx-xx-xxx ec2-user]# dstat --top-cpu
-most-expensive-
cpu process
httpd 0.1
mysqld 1.0

[root@ip-xx-xxx-xx-xxx ec2-user]# dstat --net
-net/total-
recv send
0 0
80B 308B
40B 260B
40B 260B
40B 260B
40B 260B
5925B 35k
1710B 24k
4120B 37k
256B 298B
40B 154B
[root@ip-xx-xxx-xx-xxx ec2-user]#

CPUとネットの状況を同時に確認

[root@ip-xx-xxx-xx-xxx ec2-user]# dstat -a
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
1 0 98 0 0 0| 92k 12k| 0 0 | 0 0 | 36 66
0 0 100 0 0 0| 0 0 | 80B 916B| 0 0 | 20 46
0 0 100 0 0 0| 0 0 | 40B 452B| 0 0 | 18 44
0 0 100 0 0 0| 0 0 | 40B 452B| 0 0 | 18 46
0 0 100 0 0 0| 0 0 | 40B 452B| 0 0 | 20 46
0 0 100 0 0 0| 0 0 | 40B 452B| 0 0 | 19 47
0 0 100 0 0 0| 0 0 | 40B 452B| 0 0 | 16 42
0 0 100 0 0 0| 0 0 | 40B 452B| 0 0 | 19 46
1 0 99 0 0 0| 0 0 | 40B 452B| 0 0 | 18 43
[root@ip-xx-xxx-xx-xxx ec2-user]#

-a, --all equals -cdngy (default)
all

dtatオプション

[ip-xx-xxx-xx-xxx]#dstat –help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics

Dstat options:
-c, –cpu enable cpu stats
-C 0,3,total include cpu0, cpu3 and total
-d, –disk enable disk stats
-D total,hda include hda and total
-g, –page enable page stats
-i, –int enable interrupt stats
-I 5,eth2 include int5 and interrupt used by eth2
-l, –load enable load stats
-m, –mem enable memory stats
-n, –net enable network stats
-N eth1,total include eth1 and total
-p, –proc enable process stats
-r, –io enable io stats (I/O requests completed)
-s, –swap enable swap stats
-S swap1,total include swap1 and total
-t, –time enable time/date output
-T, –epoch enable time counter (seconds since epoch)
-y, –sys enable system stats

–aio enable aio stats
–fs, –filesystem enable fs stats
–ipc enable ipc stats
–lock enable lock stats
–raw enable raw stats
–socket enable socket stats
–tcp enable tcp stats
–udp enable udp stats
–unix enable unix stats
–vm enable vm stats

–plugin-name enable plugins by plugin name (see manual)
–list list all available plugins

-a, –all equals -cdngy (default)
-f, –full automatically expand -C, -D, -I, -N and -S lists
-v, –vmstat equals -pmgdsc -D total

–bw, –blackonwhite change colors for white background terminal
–float force float values on screen
–integer force integer values on screen
–nocolor disable colors (implies –noupdate)
–noheaders disable repetitive headers
–noupdate disable intermediate updates
–output file write CSV output to file

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)

[ip-xx-xxx-xx-xxx]#

上記オプションを適切に使い分けて、最適なシステム状況診断と
対応が出来るようにしておくと良さそうです。

dstat --cpu --mem --disk --page --int --load --net
general

dstat -N eth0
interface

dstat --time --proc --swap --sys --ipc
date

dstat --full
full

dstat --vmstat
vmstat


--integer 整数値を表示します
--nocolor カラー表示を無効にします
--noheaders ヘッダー表示を無効にします
--noupdate 仲介更新を無効にします
--output file 出力結果を CSV ファイルに書き出します

参考
Dstat: Versatile resource statistics tool


今週は、連休なのでMSQLのアップグレード
【DOWNLOADサイト】
http://dev.mysql.com/downloads/mysql/5.1.html


Linux (non RPM, Intel C/C++ compiled, glibc-2.3) downloads

MySQL is pleased to make available offerings of the MySQL Community Server compiled with
the Intel CC compiler. Internal tests show that editions of the MySQL Community Server compiled
with the

    Intel CC compiler exhibit faster performance on Intel hardware than those compiled
    with the standard gcc compiler.

mysql-5.1.39-linux-i686-icc-glibc23.tar.gz

1) 最新版のダウンロード

[root@colinux src]# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.39-linux-i686-icc-glibc23.tar.gz/fro m/http://ftp.iij.ad.jp/pub/db/mysql/
–16:31:31– http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.39-linux-i686-icc-glibc23.tar.gz/from/http://ft p.iij.ad.jp/pub/db/mysql/
=> `index.html’
dev.mysql.com をDNSに問いあわせています… 213.136.52.29
dev.mysql.com|213.136.52.29|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 302 Found
場所: http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.1/mysql-5.1.39-linux-i686-icc-glibc23.tar.gz [続く]
–16:31:33– http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.1/mysql-5.1.39-linux-i686-icc-glibc23.tar.gz
=> `mysql-5.1.39-linux-i686-icc-glibc23.tar.gz’
ftp.iij.ad.jp をDNSに問いあわせています… 202.232.140.138, 202.232.140.139, 202.232.140.135, …
ftp.iij.ad.jp|202.232.140.138|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 123,343,402 (118M) [application/x-gzip]

100%[========================================================================>] 123,343,402 1.97M/s ETA 00:00

16:32:18 (2.63 MB/s) – `mysql-5.1.39-linux-i686-icc-glibc23.tar.gz’ を保存しました [123343402/123343402]

2) 解凍してパッケージの展開

[root@colinux src]# tar zxvf mysql-5.1.39-linux-i686-icc-glibc23.tar.gz

tarzxvf

3) 展開したパッケージを配置したい場所に設置。ここでは /usr/local/に配置してます。
※ 展開した場所に移動して、既存のMYSQLサーバーの停止。
※ 別にインストールする場合はポートを変えるので停止しなくてOK。Port:3307など

[root@colinux src]# mv mysql-5.1.39-linux-i686-icc-glibc23 /usr/local/
[root@colinux src]#

mysql_stop

4) 必要に応じて、既存データフォルダーのコピーとシンボリックリンクの張りなおし。

[root@colinux local]# cp -rp mysql/data mysql-5.1.39-linux-i686-icc-glibc23/
[root@colinux local]# rm mysql
[root@colinux local]# ln -s mysql-5.1.39-linux-i686-icc-glibc23 mysql
[root@colinux local]# ls -l

mysql_symbolic

5) mysqlユーザーで動かすのでフォルダーのオーナーをmysqlに変更する。

[root@colinux local]# chown -R mysql:mysql mysql-5.1.39-linux-i686-icc-glibc23/
[root@colinux local]#

6) mysqlサービスの開始とアップグレードスクリプトの実行

[root@colinux local]# /etc/init.d/mysql.server start
Starting MySQL…. SUCCESS!
[root@colinux local]#

[root@colinux bin]# pwd
/usr/local/mysql/bin
[root@colinux bin]# ./mysql_upgrade -u root -p
Enter password:
Looking for ‘mysql’ as: ./mysql
Looking for ‘mysqlcheck’ as: ./mysqlcheck
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’

upgrade_script

[root@colinux data]# pwd
/usr/local/mysql/data
[root@colinux data]# cat mysql_upgrade_info
5.1.39
[root@colinux data]#

7) エラーログの確認と動作確認をして終了

[root@colinux data]# cat colinux.err
091010 16:45:25 [Note] Event Scheduler: Purging the queue. 0 events
091010 16:45:25 InnoDB: Starting shutdown…
091010 16:45:26 InnoDB: Shutdown completed; log sequence number 0 538187
091010 16:45:26 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

091010 16:45:26 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
091010 17:02:01 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
091010 17:02:02 [Warning] option ‘thread_stack’: unsigned value 65536 adjusted to 131072
091010 17:02:02 [Note] Plugin ‘FEDERATED’ is disabled.
091010 17:02:04 InnoDB: Started; log sequence number 0 538187
091010 17:02:04 [Note] Event Scheduler: Loaded 0 events
091010 17:02:04 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.1.39-log’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)

finish_up


mysql> select @@version;
+------------+
| @@version |
+------------+
| 5.1.39-log |
+------------+
1 row in set (0.00 sec)

mysql>


存在しているユーザーの確認

[root@colinux tmp]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.1.30 MySQL Community Server (GPL)

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use mysql
Database changed
mysql> select user,host,password from mysql.user;
+———-+———–+——————————————-+
| user     | host      | password                                  |
+———-+———–+——————————————-+
| root     | localhost | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
| root     | colinux   | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
| root     | 127.0.0.1 | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
| variable | %         | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
+———-+———–+——————————————-+
4 rows in set (0.00 sec)

mysql>

ユーザー権限の確認

mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;
+———–+———-+————-+————-+————-+————-+
| Host      | User     | Select_priv | Insert_priv | Update_priv | Delete_priv |
+———–+———-+————-+————-+————-+————-+
| localhost | root     | Y           | Y           | Y           | Y           |
| colinux   | root     | Y           | Y           | Y           | Y           |
| 127.0.0.1 | root     | Y           | Y           | Y           | Y           |
| %         | variable | Y           | Y           | Y           | Y           |
+———–+———-+————-+————-+————-+————-+
4 rows in set (0.01 sec)

mysql>

ユーザーとDB毎の権限確認

mysql> select Db,User,Host,Select_priv from db;
+———+——-+———–+————-+
| Db      | User  | Host      | Select_priv |
+———+——-+———–+————-+
| test    |       | %         | Y           |
| test\_% |       | %         | Y           |
| DB02    | admin | localhost | Y           |
+———+——-+———–+————-+
3 rows in set (0.00 sec)

mysql> select Db,User,Host,Select_priv,Insert_priv,Update_priv from db;
+———+——-+———–+————-+————-+————-+
| Db      | User  | Host      | Select_priv | Insert_priv | Update_priv |
+———+——-+———–+————-+————-+————-+
| test    |       | %         | Y           | Y           | Y           |
| test\_% |       | %         | Y           | Y           | Y           |
| DB02    | admin | localhost | Y           | Y           | Y           |
+———+——-+———–+————-+————-+————-+

3 rows in set (0.49 sec)

mysql>

mysql_priv

mysql_priv


statusコマンドで、現在接続しているDBの情報を確認。

mysql>status;
————–
mysql Ver 14.14 Distrib 5.1.30, for pc-linux-gnu (i686) using readline 5.1

Connection id: 1
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server version: 5.1.30 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 10 min 44 sec

Threads: 1 Questions: 12 Slow queries: 0 Opens: 17 Flush tables: 1 Open tab
les: 4 Queries per second avg: 0.18
————–

mysql>

status

status