Orange Crush 20LDX
Posted by TQ on 三月 19th, 2010YOUKU视频
Orange Crush 20LDX
http://player.youku.com/player.php/sid/XMTU4NjQ4OTgw/v.swf
——
YOUKU视频
TQ's BLOG
YOUKU视频
Orange Crush 20LDX
http://player.youku.com/player.php/sid/XMTU4NjQ4OTgw/v.swf
——
YOUKU视频
高可用集群——HA
2008年3月10日
当日小结:
掌握使用heartbeat对Director做高可用集群HA(High Availability)。
“数据源”和“单一故障点(SOPE)”需要做HA集群。
HA方式:(三种)
主从方式HA:
主从方式HA:从服务平时不运行。只有当主服务DOWN掉时,从服务才马上启用。
对称方式HA:
现在,一般的陈列柜都有双控制器,可以有来个服务同时进行读写。
集群方式HA:
调优小结(一)
2008年3月3日
Linux调优:从底层编程的角度考虑。
① 先调优应用程序Application
② 再调优操作系统OS
③ 再调优硬件
调优:
① 计算机体系结构:冯·诺伊曼模型。
② Linux系统及硬件常见性能问题及分析工具。
命令:ps、top、vmstat、iostat、mpstat、lsof、strace、ltrace、pmap、ipcs
③ /proc文件系统及内核参数调整。
一、计算机体系结构
CPU的X86指令集兼容386指令集以后的指令集。
Windows中:.com 文件,编译成机器代码。
.exe 文件,编译成操作系统(windows)的API,一少部分编译成机器代码。
.com 文件执行最快,直接执行机器代码。
windows微内核(最核心)
注:grub就是机器代码。
IA-32体系结构:
一、CPU:
RISC:精简指令集。
CISC:复杂指令集。
64位:① X86-64:支持大内存264=16G
② 科学计算(整数计算)264位。
二、内存:
服务器端需要大缓存。
内存:EDO:50MHZ
SDRAM:66MHZ~133MHZ
DDR1:266MHZ~400MHZ 上升沿、下降沿都执行一次,翻倍了。
DDR2:533MHZ~800MHZ
三、总线:
PCI总线:
4B(32bit)×33 MHZ/s=133MB/s
8B(64bit)×33 MHZ/s=266MB/s
8B(64bit)×66 MHZ/s=512MB/s
PCI-X总线=1GB/s
USB总线:都是480Mb/s,是点对点(Point-to-Point)的Share Switch架构。
PCI-E总线:是点对点(Point-to-Point)的Share Switch架构,每条回路都为250MB/s。
1X:250MB/s
16X:4GB/s
IDE总线:133Mbps=16MB/s ,寻道时间:8ms(毫秒) 一秒,125HZ
二、Linux系统及硬件常见性能问题及分析工具
命令:ps、top、vmstat、iostat、mpstat、lsof、strace、ltrace、pmap、ipcs
检查系统时的步骤:
① #free
② #ps aux
③ 先备份
④ 再进行调整。
[root@vm51: ~]#top
[root@vm51: ~]#uptime
15:02:22 up 9:55, 2 users, load average: 0.00, 0.00, 0.00
注:top和uptime都是调用/proc/loadavg
load average:1秒、5秒、15秒 等待执行任务的平均时间。
说明:load average值高时,可能是:① I/O 慢设备读写;② 内存不足。
内存不足会引起I/O wait高,CPU占用高。内存不足,三个都高。
CPU(s):
用top命令时,
按”1”:可看每个CPU占用%。
按”m”:以内存占用率排序。
按”r”:renice 一个进程。
按”k”:kill一个进程。
%us:用户占用CPU%
%sy:系统空间占用CPU%
%ni:高优先级占用CPU%
%id:空闲CPU%
%wa:等待硬盘占CPU%
%hi:硬中断占CPU%
%si:软中断占CPU%
说明:内存还没用空,就有用SWAP了,是内存慌恐机制引起的。
说明:
buffer:在硬件中的缓存。只关心硬件,其内容不被关心。
cache:写文件时用的缓存。关心文件、路径。
[root@vm51: ~]#ps -aux
Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.7/FAQ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 2036 644 ? Ss 05:06 0:03 init [3]
root 2 0.0 0.0 0 0 ? S 05:06 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 05:06 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 05:06 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S 05:06 0:00 [migration/1]
root 6 0.0 0.0 0 0 ? SN 05:06 0:00 [ksoftirqd/1]
root 7 0.0 0.0 0 0 ? S 05:06 0:00 [watchdog/1]
TIME:从开机到现在占用CPU累计时间。
COMMAND:进程名字。有[]的只占内核空间(内核线程),是kill不掉的。
Linux中一页内存4K。
SATA:状态字。
R:正在运行running。
S:可中断休眠。
s:会话session。一堆具有相同父进程的进程,表示下面有“子进程”,此为“父进程”。
l:有线程。共享相同(工作单元)资源的进程。(省内存)
+:前置进程。当前tty的第一个进程。
<:高优先级进程。 nice值:-20最高~19最低
N:低优先级进程。
L:有内存锁。所占的内存不会被交换到SWAP中。
D:不可中断休眠。deep sleep深度休眠,多了说明慢速设备I/O多。
T:暂停进程。
Z:僵尸进程。(儿子死了,父不回收。不占资源,占PID,占内存1.7K,不能被kill)
说明:
① 进程之间有封闭的内存。如果超出封闭内存范围,叫“内存溢出”。
② 多线程可充分利用CPU。线程之间通讯方便、容易。
③ 线程之间切换付出代价较小。
命令:#pmap PID 查看调用到什么库
[root@vm51: ~]#pmap 1
1: init [3]
00546000 100K r-x– /lib/ld-2.5.so
0055f000 4K r-x– /lib/ld-2.5.so
00560000 4K rwx– /lib/ld-2.5.so
00563000 1244K r-x– /lib/libc-2.5.so
0069a000 8K r-x– /lib/libc-2.5.so
0069c000 4K rwx– /lib/libc-2.5.so
0069d000 12K rwx– [ anon ]
006cb000 8K r-x– /lib/libdl-2.5.so
006cd000 4K r-x– /lib/libdl-2.5.so
006ce000 4K rwx– /lib/libdl-2.5.so
008df000 236K r-x– /lib/libsepol.so.1
0091a000 4K rwx– /lib/libsepol.so.1
0091b000 40K rwx– [ anon ]
00927000 84K r-x– /lib/libselinux.so.1
0093c000 8K rwx– /lib/libselinux.so.1
00dec000 4K r-x– [ anon ]
08048000 32K r-x– /sbin/init
08050000 4K rw— /sbin/init
088ec000 132K rw— [ anon ]
b7fb3000 8K rw— [ anon ]
b7fc2000 4K rw— [ anon ]
bff27000 88K rw— [ stack ]
total 2036K
命令:#vmstat
[root@vm51: ~]#vmstat 2 3
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 8 10412 73608 116576 0 0 7 4 506 28 0 1 98 0 0
0 0 8 10412 73608 116576 0 0 0 0 1015 35 0 0 100 0 0
0 0 8 10412 73608 116576 0 0 0 0 1012 37 0 0 100 0 0
r:在CPU等待要执行任务的个数。
b:在CPU等待要进行块设备操作的个数。
si/so:swapin:从磁盘读。
swapout:写入到磁盘。
bi/bo:blockin/blockout
in:中断。
cs:内容切换。
us:用户占用CPU%
sy:系统空间占用CPU%
id:空闲CPU%
wa:等待硬盘占CPU% bi/bo高会导致wa高
说明:没有si、so、bi、bo但r很高,说明CPU不行了,要换高性能的CPU了。
安装sysstat包会有iostat、sar、mpstat这三个命令。
[root@vm51: /mnt/Server]#rpm -ivh sysstat-7.0.0-3.el5.i386.rpm
[root@vm51: ~]#vmstat -d 1 1 每隔1秒刷新 就刷1次
disk- ————reads———— ————writes———– —–IO——
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
ram2 0 0 0 0 0 0 0 0 0 0
ram3 0 0 0 0 0 0 0 0 0 0
ram4 0 0 0 0 0 0 0 0 0 0
ram5 0 0 0 0 0 0 0 0 0 0
ram6 0 0 0 0 0 0 0 0 0 0
ram7 0 0 0 0 0 0 0 0 0 0
ram8 0 0 0 0 0 0 0 0 0 0
ram9 0 0 0 0 0 0 0 0 0 0
ram10 0 0 0 0 0 0 0 0 0 0
ram11 0 0 0 0 0 0 0 0 0 0
ram12 0 0 0 0 0 0 0 0 0 0
ram13 0 0 0 0 0 0 0 0 0 0
ram14 0 0 0 0 0 0 0 0 0 0
ram15 0 0 0 0 0 0 0 0 0 0
sda 4636 2835 126957 19796 1679 2472 33208 24702 0 16
hdc 195 116 1444 345 0 0 0 0 0 0
fd0 0 0 0 0 0 0 0 0 0 0
md0 0 0 0 0 0 0 0 0 0 0
[root@vm51: ~]#sar -d 1 2 可看现在到之后2秒的数据
Linux 2.6.18-8.el5 (vm51.com) 01/23/2008
04:20:14 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
04:20:15 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:20:15 PM dev22-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:20:15 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
04:20:16 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:20:16 PM dev22-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev22-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
tps:每秒读取次数
sar 命令行的常用格式:
sar [options] [-A] [-o file] t [n]
在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有
的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式
存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令
的选项很多,下面只列出常用选项:
-A:所有报告的总和。
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。 (看过去数据)
-r:没有使用的内存页面和硬盘块。
-q:看CPU负载。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。[root@vm51: ~]#mpstat 用于看多CPU
Linux 2.6.18-8.el5 (vm51.com) 01/23/2008
04:28:57 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
04:28:57 PM all 0.73 0.00 2.24 0.80 0.05 0.14 0.00 96.03 1013.95
ipcs 进程间通讯。
[root@vm51: ~]#ipcs
—— Shared Memory Segments ——–共享内存
key shmid owner perms bytes nattch status
—— Semaphore Arrays ——–信号灯:两进程之间协调用
key semid owner perms nsems
—— Message Queues ——–消息队列
key msqid owner perms used-bytes messages
[root@vm51: ~]#ipcrm -m shmid(共享ID) 删SHM共享内存(Orecal时用)
lsof、strace、ltrace命令:
lsof 刷/proc文件系统
[root@vm51: ~]#lsof -p 1 -p:PID
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,1 4096 2 /
init 1 root rtd DIR 8,1 4096 2 /
init 1 root txt REG 8,1 38620 654239 /sbin/init
init 1 root mem REG 8,1 121684 427404 /lib/ld-2.5.so
init 1 root mem REG 8,1 1576952 427405 /lib/libc-2.5.so
init 1 root mem REG 8,1 16528 427406 /lib/libdl-2.5.so
init 1 root mem REG 8,1 242880 427422 /lib/libsepol.so.1
init 1 root mem REG 8,1 93512 427423 /lib/libselinux.so.1
init 1 root 10u FIFO 0,16 927 /dev/initctl
[root@vm51: ~]#watch lsof -p PID
[root@vm51: ~]#strace -p PID 显示系统调用,追踪程序在干什么
[root@vm51: ~]#strace apachectl start
[root@vm51: ~]#ltrace /bin/ls
[root@vm51: ~]#time /bin/ls 看执行命令用了多少时间
anaconda-ks.cfg Desktop install.log install.log.syslog password tq tqwjj u
real 0m0.013s
user 0m0.001s
sys 0m0.011s
三、/proc文件系统及内核参数调整
/proc/interrupts 中断
/proc/ioports I/O资源
/proc/meminfo 内存信息
/proc/cpuinfo CPU信息
/proc/devices 设备文件
例:
[root@vm51: ~]#vim /etc/modprobe.conf
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias snd-card-0 snd-ens1371
options snd-card-0 index=0
options snd-ens1371 index=0
remove snd-ens1371 { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r –ignore-remove snd-ens
1371
alias eth0 pcnet32
写:options eth0 irq=10 ioports=
中断冲突时改
/proc/sys/目录下的文件是要我们改的,即调优。
例:
[root@vm51: ~]#cat /proc/sys/net/ipv4/ip_forward
0
[root@vm51: ~]#echo > 1 /proc/sys/net/ipv4/ip_forward 临时修改
[root@vm51: ~]#sysctl -w net.ipv4.ip_forward=1 临时修改
net.ipv4.ip_forward = 1
永久生效:
[root@vm51: ~]#vim /etc/sysctl.conf
写:net.ipv4.ip_forward = 1
[root@vm51: ~]#sysctl -p 读取/etc/sysctl.conf配置文件内容,并重新设置一遍。(永久生效)
日志项目集成:
项目说明:多台Web服务用用LVS进行负载均衡,并且多台Web服务器的apache日志由独立一台日志服务器来记录到syslog日志中。(这里主要介绍如何使用syslog日志服务远程管理apache日志)
∵apache本身有一套日志系统,记录在/var/log/httpd/中。现在想用独立的一台syslog日志服务器记录apache日志信息。
∴用“管道”:| logger
在各台Web服务器设置:
⑴ 上加-r参数,开启远程日志管理。
[root@vm5: ~]#vim /etc/sysconfig/syslog
—————————————————–前略———————————————————–
SYSLOGD_OPTIONS=”-m 0 -r -x” 注:-m:MAC -r:开启远程日志 -x:不DNS
—————————————————–后略———————————————————–
⑵ 在apache的配置文件/etc/httpd/conf/httpd.conf中,增加| logger 。
[root@vm5: ~]#vim /etc/httpd/conf/httpd.conf
—————————————————–前略———————————————————–
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
CustomLog logs/access_log combined
CustomLog “| logger -p info” combined
—————————————————–后略———————————————————–
此时,就可以在独立的syslog日志服务器上,查看到各台Web服务器的日志了!!!
Recent Comments