Performanceの最近のブログ記事
リッチサイトはCSSやらJSやら多くのファイルをロードするために,リクエスト回数も増えサーバーも重くなります。
変更が少ないファイルについてはExpiresヘッダを追加することで,ユーザにキャッシュさせリクエスト回数
を減らすことができます。
Apache側でExpiresヘッダをレスポンスに追加することで,このファイルは,~日間までは再リクエストしなくても変更が無いという設定をmod_expiresですることが出来ます。
基本的には静的なファイルや更新されることがほとんど無いファイルはmod_expireにて設定した方が
良い場合が多いです。(gif/jpg, js, css)
mod_expireはApacheのディフォルトモジュールです。
①find . / -name mod_expires.c で.cを探す。
②/home/admin/httpd-2.2.4/modules/metadata/mod_expires.cに発見した.cより.soを作成する。
③cd /home/admin/httpd-2.2.4/modules/metadata/
④/usr/local/apache2/bin/apxs -c mod_expires.c
⑤ls -l mod_expires*
- -rw-r--r-- 1 admin admin 18117 7月 12 2006 mod_expires.c
- -rw-r--r-- 1 admin admin 3971 8月 6 2006 mod_expires.dsp
- -rw-r--r-- 1 admin admin 15 11月 22 2004 mod_expires.exp
- -rw-r--r-- 1 root root 822 8月 31 06:15 mod_expires.la
- -rw-r--r-- 1 root root 324 8月 31 06:15 mod_expires.lo
- -rw-r--r-- 1 root root 29116 8月 31 06:15 mod_expires.o
- -rw-r--r-- 1 root root 0 8月 31 06:15 mod_expires.slo
⑥mod_expire.soファイルの作成
/usr/local/apache2/bin/apxs -i -a -n expires mod_expires.la
⑦/usr/local/apache2/modules/mod_expires.so が作成されたか確認。
⑧/usr/local/apache2/conf/httpd.conf にモジュールロードが追加されているか確認。
LoadModule expires_module modules/mod_expires.so
⑨画像ファイル等のキャッシュを設定
mod_expiresでgif、jpeg等をキャッシュ
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
</IfModule>
⑩再起動して設定を反映
/usr/local/apache2/bin/apachectl restart
[root@localhost ~]# top
top - 00:28:23 up 1:13, 1 user, load average: 0.06, 0.02, 0.00
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.2% us, 0.6% sy, 0.0% ni, 97.1% id, 0.9% wa, 0.1% hi, 0.1% si, 0.0% st
Mem: 320840k total, 181928k used, 138912k free, 11928k buffers
Swap: 655352k total, 0k used, 655352k free, 84184k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2945 root 15 0 2120 896 704 R 1.9 0.3 0:00.03 top
1 root 15 0 2008 676 588 S 0.0 0.2 0:01.46 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
4 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.02 khelper
6 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
55 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
56 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
111 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
112 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
115 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
117 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 kseriod
136 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
137 root 15 0 0 0 0 S 0.0 0.0 0:00.01 pdflush
138 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0
139 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
304 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
326 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
359 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kmirrord
366 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 ksnapd
373 root 10 -5 0 0 0 S 0.0 0.0 0:00.19 kjournald
416 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kauditd
441 root 17 -4 2856 1388 388 S 0.0 0.4 0:01.00 udevd
606 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
607 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux
627 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kgameportd
628 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 ac97/0
1304 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kjournald
1648 root 21 0 2232 480 188 S 0.0 0.1 0:00.00 dhclient
1702 root 18 0 1656 564 476 S 0.0 0.2 0:00.08 syslogd
1706 root 16 0 1600 420 348 S 0.0 0.1 0:00.02 klogd
1725 rpc 15 0 1736 544 448 S 0.0 0.2 0:00.00 portmap
1744 rpcuser 18 0 1744 704 616 S 0.0 0.2 0:00.04 rpc.statd
1773 root 15 0 4740 600 320 S 0.0 0.2 0:00.00 rpc.idmapd
1787 dbus 15 0 13240 1072 868 S 0.0 0.3 0:00.05 dbus-daemon
1797 root 18 0 2272 892 804 S 0.0 0.3 0:00.00 hcid
1808 root 21 0 1664 492 428 S 0.0 0.2 0:00.00 sdpd
1817 root 9 -10 0 0 0 S 0.0 0.0 0:00.00 krfcommd
1853 root 15 0 1820 480 404 S 0.0 0.1 0:00.00 hidd
1937 root 18 0 1876 720 600 S 0.0 0.2 0:00.00 automount
1951 root 16 0 1912 512 296 S 0.0 0.2 0:00.00 smartd
1960 root 18 0 1600 452 380 S 0.0 0.1 0:00.00 acpid
1969 root 22 0 5000 1048 816 S 0.0 0.3 0:00.00 hpiod
1974 root 15 0 13704 4812 1160 S 0.0 1.5 0:00.05 python
[root@localhost ~]# pstree
init─┬─acpid
├─anacron───run-parts─┬─000-delay.cron───sleep
│ └─awk
├─atd
├─automount
├─avahi-daemon───avahi-daemon
├─crond
├─cups-config-dae
├─cupsd
├─dbus-daemon───{dbus-daemon}
├─dhclient
├─events/0
├─gpm
├─hald───hald-runner─┬─hald-addon-acpi
│ ├─hald-addon-keyb
│ └─hald-addon-stor
├─hcid
├─hidd
├─hpiod
├─httpd───5*[httpd]
├─khelper
├─klogd
├─krfcommd
├─ksoftirqd/0
├─kthread─┬─ac97/0
│ ├─aio/0
│ ├─ata/0
│ ├─ata_aux
│ ├─cqueue/0
│ ├─kacpid
│ ├─kauditd
│ ├─kblockd/0
│ ├─kgameportd
│ ├─khubd
│ ├─2*[kjournald]
│ ├─kmirrord
│ ├─kpsmoused
│ ├─kseriod
│ ├─ksnapd
│ ├─ksuspend_usbd
│ ├─kswapd0
│ ├─2*[pdflush]
│ └─scsi_eh_0
├─6*[mingetty]
├─mysqld_safe───mysqld───9*[{mysqld}]
├─portmap
├─prefdm───gdm-binary───gdm-binary─┬─Xorg
│ └─gdmgreeter
├─python
├─rpc.idmapd
├─rpc.statd
├─sdpd
├─2*[sendmail]
├─smartd
├─sshd───sshd───sshd───bash───bash───pstree
├─syslogd
├─udevd
├─watchdog/0
└─xfs
[root@localhost ~]# ps
PID TTY TIME CMD
2594 pts/1 00:00:00 bash
2953 pts/1 00:00:00 ps
[root@localhost ~]#
PSコマンドメモ
ps auxw
[root@localhost ~]# ps aufxw
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 2004 676 ? Ss 21:57 0:01 init [5]
root 2 0.0 0.0 0 0 ? SN 21:57 0:00 [ksoftirqd/0]
root 3 0.0 0.0 0 0 ? S 21:57 0:00 [watchdog/0]
root 4 0.0 0.0 0 0 ? S< 21:57 0:00 [events/0]
root 5 0.0 0.0 0 0 ? S< 21:57 0:00 [khelper]
root 6 0.0 0.0 0 0 ? S< 21:57 0:00 [kthread]
root 55 0.0 0.0 0 0 ? S< 21:57 0:00 \_ [kblockd/0]
root 56 0.0 0.0 0 0 ? S< 21:57 0:00 \_ [kacpid]
root 111 0.0 0.0 0 0 ? S< 21:57 0:00 \_ [cqueue/0]
プロセスの詳細は,以下のようにも見る事も出来ます。
ps auxwww -L
ps auxwww -L | sort -k 3
チューニングパラメータは/proc/sys配下に集まっています。
/proc/sys /kernel
/fs
/vm
/net
shmall、shmmni、shmmax
共有メモリ(シェアードメモリ)のパラメータです。shmallはシステム全体の共有メモリの大きさ、
shmmaxは1プロセスごとの大きさ、shmmniは1プロセスごとの共有メモリセグメント(領域)の数の上限を規定します。
共有メモリを利用する構造になっているアプリケーション(データベースなど)によっては、
この値を大きく取っておかないとうまく動作しないものもあります。
[root@localhost etc]# cp /etc/sysctl.conf /etc/sysctl.conf.20070907
[root@localhost etc]# cat /proc/sys/kernel/shmmax
33554432
[root@localhost etc]# vi /etc/sysctl.conf
[root@localhost etc]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.shmmax = 536870912
[root@localhost etc]# cat /proc/sys/kernel/shmmax
536870912
[root@localhost etc]#
