TQ's BLOG

Orange Crush 20LDX

Posted by TQ on 三月 19th, 2010

YOUKU视频
Orange Crush 20LDX
http://player.youku.com/player.php/sid/XMTU4NjQ4OTgw/v.swf
——

YOUKU视频

test 视频

Posted by TQ on 三月 19th, 2010

test 视频

test 视频

高可用集群——HA

Posted by TQ on 十月 11th, 2009

高可用集群——HA

2008年3月10日

当日小结:

 掌握使用heartbeat对Director做高可用集群HA(High Availability)。

clip_image001

“数据源”和“单一故障点(SOPE)”需要做HA集群。 

HA方式:(三种)

主从方式HA:

clip_image002 

主从方式HA:从服务平时不运行。只有当主服务DOWN掉时,从服务才马上启用。 

 

对称方式HA:

clip_image003 

现在,一般的陈列柜都有双控制器,可以有来个服务同时进行读写。 

 

 

集群方式HA:

clip_image004 

 

 

  Read the rest of this entry »

调优小结(一)&& linux_Performance_Tuning_1

Posted by TQ on 十月 11th, 2009

调优小结(一)

2008年3月3日

Linux调优:从底层编程的角度考虑。

先调优应用程序Application

再调优操作系统OS

再调优硬件

调优:

计算机体系结构:冯·诺伊曼模型。

Linux系统及硬件常见性能问题及分析工具。

命令:ps、top、vmstat、iostat、mpstat、lsof、strace、ltrace、pmap、ipcs

③ /proc文件系统及内核参数调整。

一、计算机体系结构

system_configuration

CPU的X86指令集兼容386指令集以后的指令集。

Windows中:.com 文件,编译成机器代码。

.exe 文件,编译成操作系统(windows)的API,一少部分编译成机器代码。

.com 文件执行最快,直接执行机器代码。

windows微内核(最核心)

注:grub就是机器代码。

IA-32体系结构:

一、CPU:

RISC:精简指令集。

CISC:复杂指令集。

64位:① X86-64:支持大内存264=16G

② 科学计算(整数计算)264位。

二、内存:

memory

服务器端需要大缓存。

内存: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

clip_image004

[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)

clip_image005

说明:

① 进程之间有封闭的内存。如果超出封闭内存范围,叫“内存溢出”。

② 多线程可充分利用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配置文件内容,并重新设置一遍。(永久生效)

日志项目集成

Posted by TQ on 十月 11th, 2009

日志项目集成:

项目说明:多台Web服务用用LVS进行负载均衡,并且多台Web服务器的apache日志由独立一台日志服务器来记录到syslog日志中。(这里主要介绍如何使用syslog日志服务远程管理apache日志)

clip_image001

∵apache本身有一套日志系统,记录在/var/log/httpd/中。现在想用独立的一台syslog日志服务器记录apache日志信息。

∴用“管道”:| logger

在各台Web服务器设置:

上加-r参数,开启远程日志管理。

[root@vm5: ~]#vim /etc/sysconfig/syslog

—————————————————–前略———————————————————–

SYSLOGD_OPTIONS=”-m 0 -r -x注:-mMAC -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服务器的日志了!!!


Copyright © 2009 TQ 试用 WP. All rights reserved.