构建高可用Linux服务器笔记

  • 查看cpu详细情况
    物理cpu个数
    [root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
    1
    每个物理cpu中core的个数(核数)
    [root@localhost ~]# cat /proc/cpuinfo | grep "cpu cores" | uniq
    cpu cores	: 2
    逻辑cpu的个数
    [root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
    2
    [root@localhost ~]# 

          一般来说物理cpu个数*核数就应该等于逻辑cpu的个数,如果不相等的话,则表示你的服务器cpu支持超线程技术。


  • 查看内存
    [root@localhost ~]# free -m
                 total       used       free     shared    buffers     cached
    Mem:          1005        428        576          0         89        210
    -/+ buffers/cache:        129        875
    Swap:         2041          0       2041


  • 查看硬盘及分区信息
    [root@localhost ~]# fdisk -l
    
    Disk /dev/sda: 500.1 GB, 500107862016 bytes
    240 heads, 63 sectors/track, 64601 cylinders
    Units = cylinders of 15120 * 512 = 7741440 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk identifier: 0x27292728
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1        3468    26218048+   7  HPFS/NTFS
    Partition 1 does not start on physical sector boundary.
    /dev/sda2            3469       64601   462165480    f  W95 Ext'd (LBA)
    /dev/sda5            3469        6937    26225608+   b  W95 FAT32
    Partition 5 does not start on physical sector boundary.
    /dev/sda6            6938        6965      204800   83  Linux
    /dev/sda7            6965       56002   370722816   83  Linux
    /dev/sda8           56002       58776    20971520   83  Linux
    /dev/sda9           58777       61551    20971520   83  Linux
    /dev/sda10          61551       64325    20971520   83  Linux
    /dev/sda11          64325       64601     2091008   82  Linux swap / Solaris


  • 检查文件系统的磁盘空间占用情况
    [root@localhost ~]# df -h
    文件系统	      容量  已用  可用 已用%% 挂载点
    /dev/sda8              20G  418M   19G   3% /
    tmpfs                 503M     0  503M   0% /dev/shm
    /dev/sda6             194M   27M  158M  15% /boot
    /dev/sda7             349G  1.6G  329G   1% /home
    /dev/sda9              20G  4.6G   15G  25% /usr
    /dev/sda10             20G  443M   19G   3% /var


  • 查看硬盘的I/O性能
    [wm@localhost test]$ iostat -d -x -k 1 10
    Linux 2.6.32-358.el6.i686 (localhost.wangmeng) 	2015年04月13日 	_i686_	(2 CPU)
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               3.66     0.80    4.47    0.30   245.38     4.38   104.91     0.02    3.69   2.20   1.05
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00     0.00    1.00    0.00     8.00     0.00    16.00     0.01   10.00  10.00   1.00
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

  • 查看Linux系统中某目录的大小
    [wm@localhost workspace]$ du -sh test
    16K	test
  • 查看目录大小排序
    [root@localhost workspace]# du -sh * | sort -nr
    836K	libevent-2.0.22-stable.tar.gz
    776K	shell-98-v1
    169M	glibc-2.21
    108K	src.2e.tar.gz
    50M	Mastering_CMake.pdf
  • 查看当前分区挂载点占用空间最多的文件或目录,从大到小10个
    [root@localhost workspace]# du -cks * |sort -rn |head -n 10
    308304	总用量
    173020	glibc-2.21
    50976	Git权威指南.pdf
    50340	Mastering_CMake.pdf
    24656	glibc-2.21.tar.gz
    3880	libevent-2.0.22-stable
    3576	apue.2e
    836	libevent-2.0.22-stable.tar.gz
    776	shell-98-v1
    108	src.2e.tar.gz
  • 查看平均负载
    [root@localhost workspace]# uptime
     07:11:46 up  1:47,  1 user,  load average: 0.00, 0.00, 0.00

  • 查看系统当前有哪些用户,占用了哪些终端
    [wm@localhost ~]$ tty
    /dev/pts/0
    [wm@localhost ~]$ who am i
    wm       pts/0        2015-04-22 06:22 (192.168.1.101)
    [wm@localhost ~]$ w
     06:38:13 up 16 min,  1 user,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    wm       pts/0    192.168.1.101    06:22    0.00s  0.05s  0.00s w
    [wm@localhost ~]$ who
    wm       pts/0        2015-04-22 06:22 (192.168.1.101)

  • 动态命令top查看负载
    [root@localhost workspace]# top
    top - 07:13:29 up  1:49,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   1029408k total,   259264k used,   770144k free,    82044k buffers
    Swap:  2091000k total,        0k used,  2091000k free,    55980k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
     3101 root      20   0  2700 1092  860 R  0.3  0.1   0:00.05 top  

  • 使用vmstat监控Linux系统的整体性能
    [root@localhost workspace]# vmstat
    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      0 770292  82052  55980    0    0   108     2   41   35  2  1 97  0  0
    [root@localhost workspace]# 


  • 查看系统内核
    [root@localhost workspace]# uname -a
    Linux localhost.wangmeng 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux
    
    [root@localhost workspace]# uname -r
    2.6.32-358.el6.i686

  • 查看系统体系结构
    [wm@adx ~]$ uname -m
    x86_64
    [wm@adx ~]$ arch
    x86_64

  • 查看系统是32位或者64位
    [root@localhost workspace]# file /sbin/init
    /sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
  • 是否存在/lib64目录,有则是64位
    [root@localhost workspace]# ls -lF / | grep /$
  • 查看发行版本
    [root@localhost workspace]# lsb_release -a
    LSB Version:	:base-4.0-ia32:base-4.0-noarch:core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
    Distributor ID:	CentOS
    Description:	CentOS release 6.4 (Final)
    Release:	6.4
    Codename:	Final

  • 查看lvs模块是否载入
    [root@localhost workspace]# lsmod | grep ip_vs
  • 查看pci信息
    [root@localhost workspace]# lspci | grep Ether
    05:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 14)

           网卡监控命令miit-tool和iptraf

  • 查看所有限制值
    [wm@localhost ~]$ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 7920
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 1024
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited

  • 系统最大文件打开数总限制
    [wm@localhost ~]$ cat /proc/sys/fs/file-max 
    100962

  • 整个系统目前使用的文件句柄数量
    [wm@localhost ~]$ cat /proc/sys/fs/file-nr 
    1056	0	100962

  • lsof命令查看某个进程打开了哪些句柄,也可以看到某个文件/目录被什么警察占用了
    [wm@localhost ~]$ lsof | more
    COMMAND    PID      USER   FD      TYPE DEVICE SIZE/OFF     NODE NAME
    init         1      root  cwd   unknown                          /proc/1/cwd (readlink: Permission denied)
    init         1      root  rtd   unknown                          /proc/1/root (readlink: Permission denied)
    init         1      root  txt   unknown                          /proc/1/exe (readlink: Permission denied)
    init         1      root NOFD                                    /proc/1/fd (opendir: Permission denied)
    kthreadd     2      root  cwd   unknown                          /proc/2/cwd (readlink: Permission denied)
    kthreadd     2      root  rtd   unknown                          /proc/2/root (readlink: Permission denied)

  • 修改ulimits数值永久生效,则必须修改配置文档
    [wm@localhost ~]$ vim /etc/profile
    [wm@localhost ~]$ vim /etc/sysctl.conf           // 不会改变用户的ulimits -a 只是/proc/sys/fs/file-max的值变了
    [wm@localhost ~]$ vim /ect/security/limits.conf  // 添加soft nofile 32768 hard nofile 65536 文件句柄限制改成软32768,硬65536 重启失效
    [wm@localhost ~]$ vim /etc/rc.loal              // 添加 ulimit -SHn 65535  -H 硬限制(实际限制),-S软限制(警告限制)

  • crontab防止脚本周期内未执行完重复执行
如果某脚本要运行30分钟,可以在Crontab里把脚本间隔设为至少一小时来避免冲突。而比较糟的情况是可能该脚本在执行周期内没有完成,接着第 二个脚本又开始运行了。如何确保只有一个脚本实例运行呢?一个好用的方法是利用lockf(FreeBSD 8.1下为lockf,CentOS  5.5下为flock),在脚本执行前先检测能否获取某个文件锁,以防止脚本运行冲突。

lockf的参数如下:
-k:一直等待获取文件锁。
-s:silent,不发出任何信息,即使拿不到文件锁。
-t seconds:设定timeout的时间是seconds秒,如果超过时间,则自动放弃。

以下Crontab计划任务执行前,需获取临时文件create.lock的文件锁,此项Crontab计划任务的内容如下:

1*/10 * * * * (lockf -s -t 0 /tmp/create.lock /usr/bin/python /home/project/cron/create_tab.py  >> /home/project/logs/create.log 2>&1)

若第一个实例在10分钟内没有运行完,第2个实例不会运行。我以前是通过Shell脚本来解决这个问题的,比如用while...do循环,然后放在后台执行。但后来发现其实用flock或lockf方法更为简单。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值