十条命令帮你检查Linux服务器性能

来自于InfoQ, 写的真的是非常的好

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。

概述

通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。

uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top

其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,也就是所谓的USE方法。

下面我们来逐一介绍下这些命令,有关这些命令更多的参数和说明,请参照命令的手册。更多

对Nginx 日志的深度挖掘

来源于InfoQ, 写的非常的好

Nginx (读作Engine-X)是现在最流行的负载均衡和反向代理服务器之一。如果你是一名中小微型网站的开发运维人员,很可能像我们一样,仅Nginx每天就会产生上百M甚至数以十G的日志文件。如果没有出什么错误,在被 logrotate 定期分割并滚动删除以前,这些日志文件可能都不会被看上一眼。

实际上,Nginx日志文件可以记录的信息 相当丰富 ,而且格式可以定制,考虑到`$time_local`请求时间字段几乎必有,这是一个典型的基于文件的时间序列数据库。Nginx日志被删除以前,或许我们可以想想,其中是否蕴含着未知的金矿等待挖掘?

更多

crond BAD FILE MODE 解决办法

给piwik 设置好cron job 以后,过了一晚上竟然发现cronjob 没有执行,一看log,出现下面的错误:

[root@ga log]# cat cron |grep piwik
Sep 14 08:43:01 ga crond[2754]: (root) BAD FILE MODE (/etc/cron.d/piwik)
Sep 14 14:40:01 ga crond[2754]: (root) BAD FILE MODE (/etc/cron.d/piwik)
Sep 15 00:29:01 ga crond[2754]: (root) BAD FILE MODE (/etc/cron.d/piwik)

google 了一下才发现原来是我自作多情的把piwik这个文件改成了755.。而crond 不喜欢可写文件。。因此只要把这个文件的权限改为644 即可

chmod 644 piwik

就解决了问题

Piwik 使用GeoIP 以及优化(二)

  1.  piwik 现在的版本都支持geoip maxmind 的数据库自动更新,因此你也不在需要使用maxmind 的 geoipupdate 的程序了
  2. ISP 和 ORG 的 IP 数据库是需要购买的
  3. geo city 的数据库自动包括geo country 的数据库,因此在更新的时候只需要更新geo city 即可
  4. 对于piwik,  默认建议打开auto-archive. 如果您使用的是军哥LNMP, 需要yum install cronie -y 来安装crontab service
  5. piwik office optimize doc: http://piwik.org/docs/optimize-how-to/

军哥LNMP 安装后一些基本的php 优化

军哥的LNMP 确实异常的稳定,但是一些安全措施做得太好了以至于好多程序不能好好运行,因此需要做一些基本的优化

php.ini 位于/usr/local/php/etc/php.ini, 你可以用php –ini 来查看ini 的具体位置

1) 编辑disable_functions, 去掉一些常用的函数,比如说scandir, chroot, exec, shell_exec 等等
2) 编辑memory_limit, 改为1024或者2048M 等等,根据你的实际情况而定
3) 编辑timezone, 可以改为America/New_York

Piwik 使用GeoIP 以及优化(一)

接上篇文章,开始给我的大部分网站使用piwik,但是使用piwik 首先需要的就是enable GeoIP

  1. GeoIP Module for Piwik

         Piwik 有四种方式来使用GeoIP, 分别是default, GeoIP(PHP), GeoIP(PECL), GeoIP(http or nginx)

        在高流量的网站,GeoIP PHP 就会显得速度慢很多,因此这里 GeoIP PECL 成为了piwik 的首选

      在piwik 的官方文档上有在ubuntu/debian 上安装pecl geoip 的办法,因此这里不再多说. 这篇文章主要说说如何安装GeoIP PECL 在RHEL系列的OS 上

      以CentOS为例,首先确保你的系统安装了PECL,如果没有的话就先google 一下安装PECL

     然后以root 执行下列命令

pecl install geoip

  然后有很大的可能性你会得到下面的error:

shtool at '/tmp/pear/temp/geoip/build/shtool' does not exist or is not executable.

  出现这个error 的原因在于/tmp 这个目录不允许执行可执行文件

  解决办法也很简单,就是更改pecl 的默认tmp 目录,比如改为/root/tmp

mkdir /root/tmp 
 pecl config-set temp_dir /root/tmp
 or
 pear config-set temp_dir /root/tmp

pecl config-set这个命令经常会出问题,因此建议使用pear config-set这个命令

更改完pecl 的tmp 默认目录以后,就可以顺利的执行pecl install geoip的命令了

安装完毕后,还剩下最后一件事: 配置php.ini, 添加geoip extension 和 目录

用你喜欢的编辑器,无论是是vi, vim 还是nano,编辑php.ini,添加如下代码:

[PHP]
 ;AFTER THE PHP SECTION NOT BEFORE
 extension=geoip.so

 

[gd] 
;AFTER THE gd SECTION NOT BEFORE 
geoip.custom_directory=/full/linux/path/to/piwik/misc

注意当使用pecl install geoip 的时候, extension=geoip.so 一般会自动添加到php.ini配置文件中,在这里你需要确定下

Leaseweb VPS 是一个大坑。。。

接上篇文章,因为决定不再使用histats,所以准备上线piwik,自己来host website counter

看上了leaseweb 的 washington DC 的 Cloud, 8GB RAM, 8 Core 才30刀,实在便宜的很,没想到这才是坑的开始

首先,在order 页面尽管标注的是SSD storage,但是实际上只是SSD 的SAN, 是一个shared remote storage,因此 IO rate 和 local disk 的 SSD相比差的太远了,只能达到80Mbps. 对于piwik 这种对数据库读写非常频繁的应用来说,这是一个最大的坑

其次,Leaseweb 的Cloud 都是使用的DHCP 的IP assignment,这个在cloud中很常见, no complaint.  个人习惯问题一般喜欢把DHCP 改成static。。。讨厌的是leaseweb 竟然不是使用标准的 gateway XX.XX.XX.1 ( CIDR 是 /25), 而是使用的是XX.XX.XX.126…

就为了这个问题我debug了整个晚上。。。差点把centos的配置文件全部重写一遍。。