keepalive对fin_wait1及syn_recv的影响

服务器连接数有1K左右。不过syn_recv有200~300多。也有较我的fin_wait1及fin_wait2状态的连接。调整tcp_synack_retries参数为2效果也不太理想。于是抓包找每个TCP连接的状态及原因。

服务器会在建立连接15s后断开连接。查看nginx参数。设置的keepalive_timeout为15s。于是加大到60s.5分钟后查看服务器状态。syn_recv明显下降到了正常水平。由于断开连接的时间间隔加大了。所以fin_wait1也明显减少。

puppet 小试牛刀

一. 安装

需要安装

ruby

factor

puppet

下载页面

http://projects.puppetlabs.com/projects/puppet/wiki/Downloading_Puppet

1. ruby

yum install ruby*

2.facter

wget http://puppetlabs.com/downloads/facter/facter-1.5.8.tar.gz

tar zxvf facter-1.5.8.tar.gz

cd facter

ruby install.rb

3. puppet

wget http://puppetlabs.com/downloads/puppet/puppet-2.6.8.tar.gz

tar zxvf puppet-2.6.8.tar.gz

cd puppet

ruby install.rb

4.配置

安装完毕,该配置了.

hostname 配置

server:puppet-server

client:puppet-client1

client申请cert

puppetd –server puppetmaster.testing.com –verbose –waitforcert 60

server apply:

puppetca –list   查看

puppetca –sign -a

 

配置文件

/etc/puppet/manifests

class setip {
    define addip ($ip){
        exec { “/sbin/ifconfig $title $ip”:}
        }
    define delip (){
        exec { “/sbin/ifconfig $title down”:}
        }
}
node puppet-client1{
    file { “/tmp/hello.sh”:
        content => “#!/bin/bashnecho hello,world”,
        owner    => “root”,
        group    => “root”,
        mode    => 755;
    }
    service {
        “nfs”:    
        ensure => stopped;
    }
    host { “www.lava.cn”:
        ip => “113.11.201.104”,
        alias => [“www.lava.cn”,”jingbo.lava.cn”],
        ensure => absent;
    }
    cron {
        “hello,world”:    
        command => “/tmp/hello.sh”,
        user    => “root”,
        hour    => “*”,
        minute    => “*/5″,
    }
    package {
        “sysstat”:
        ensure    => installed;    
    }
    filebucket {
        “main”:
        server => puppet-server;
    }
    backup {
        “/etc/hosts”:
        source => “/etc/hosts”,    
        backup => main;
    }
}

 

mysql优化参数

1.DNS lookup

skip-name-resolve

2. 慢查询日志

log-slow-queries = /new/path/to/file

long_query_time=5

3.查询缓冲

query_cache_size = 32MB

tmp_table_size = 256M

query_cache_type = ON

have_query_cache=YES

4.最大连接数

max_connections = 512

wait_timeout = 10

5.打开表的数目

table_cache = 256K

6.缓存线程

thread_cache = 256

thread_cache_size = 64

7. 索引缓存

key_buffer_size=384MB

8. 允许的请求包大小

max_allowed_packet = 4M

9.查询排序时所能使用的缓冲区大小 每连接独占

sort_buffer_size = 6M

10. 读查询操作所能使用的缓冲区大小 每连接独占

read_buffer_size = 4M

11. 该参数取值为服务器逻辑CPU数量×2

thread_concurrency = 8

set global query_cache_size出错

为了设置查询缓存大小,设置query_cache_size系统变量。设置为0表示禁用查询缓存。 默认缓存大小设置为0;也就是禁用查询缓存。

当设置query_cache_size变量为非零值时,应记住查询缓存至少大约需要40KB来分配其数据结构。(具体大小取决于系统结构)。如果你把该值设置的太小,将会得到一个警告,如本例所示:

MySQL> SET GLOBAL query_cache_size = 40000;

Query OK, 0 rows affected, 1 warning (0.00 sec)


MySQL> SHOW WARNINGSG

*************************** 1. row ***************************

   Level: Warning

    Code: 1282

Message: Query cache failed to set size 39936; new query cache size is 0

linux下抓出哪个进程造成的iowait很高的方法[转]

http://iceskysl.1sters.com/?p=627

 

IOWait高的一些处理方法

1、检查RAID的状态,比如是否正在重建或者没有初始化

2、替换操作系统的内核,最好使用发行版标准的Linux kernel,因为有比较多的补丁

3、检查/proc/sys/vm下面是否可以优化

4、是否使用了文件系统,文件系统是否有优化的选项,比如在RAID5上采用xfs文件系统时,

可以调节一些参数优化性能

5、客户端程序是否产生了过大的压力,比如磁盘的读写性能只有10MB/s,每个线程的读写

速度为5MB/s,那么如果读写线程数为20的话,无疑会造成IOWait过高

6、查看进程状态

ps -eo pid,user,wchan=WIDE-WCHAN-COLUMN -o s,cmd|awk ‘ $4 ~ /D/ {print $0}’

lsof -p $pid

7、使用block_dump

/etc/init.d/syslog stop

echo 1 > /proc/sys/vm/block_dump

sleep 60

dmesg | awk ‘/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process)

print process[x],x}’ |sort -nr |awk ‘{print $2 ” ” $1}’ |

head -n 10

echo 0 > /proc/sys/vm/block_dump

/etc/init.d/syslog start

系统信息汇总

http://aspersa.googlecode.com/svn/html/summary.html

 

# Download and run:

wget http://aspersa.googlecode.com/svn/trunk/summary
bash summary

# Or, download and run in a single step:

wget -O- http://aspersa.googlecode.com/svn/trunk/summary | bash

what is the difference between buffer and cache?

Buffers are allocated by various processes to use as input queues, etc. Most of the time, buffers are some processes’ output, and they are file buffers. A simplistic explanation of buffers is that they allow processes to temporarily store input in memory until the process can deal with it.

缓冲区是被一些进程当作输入队列来使用,在很多时候,缓冲区是一些进程的输出,它们是文件的缓冲区。缓冲区最简单的解释是它们允许进程存储输入到内存中直到进程能够对付它。

Cache is typically frequently requested disk I/O. If multiple processes are accessing the same files, much of those files will be cached to improve performance (RAM being so much faster than hard drives), it’s disk cache.

高级缓冲通常频繁的请求磁盘I/O。如果多个进程同时访问相同的文件,这些文件将会缓存来提高性能(内存比硬盘驱动器快很多),这是磁盘缓冲。

总结:

buffer:更靠近块设备

cache: 更靠近文件系统