查看Linux服务器CPU详细情况

作者:linux120 发布时间:November 30, 2012 分类:服务器维护

判断Linux服务器CPU的依据如下:
具有相同core id的CPU是同一个core的超线程
具有相同physical id的CPU是同一个CPU封装的县城或核心
物理cpu个数如下所示:
[root@linux120.com]#grep "physical id" /proc/cpuinfo | sort | uniq | wc -l
2
每个物理CPU中core的个数如下所示:
[root@linux120.com]#grep "cpu cores" /proc/cpuinfo | uniq
cpu cores :1
逻辑CPU的个数如下所示:
[root@linux120.com]#grep "processor" /proc/cpuinfo | wc -l
4

Rsync同步Permission denied错误处理

作者:linux120 发布时间:November 30, 2012 分类:服务器维护

客户邮局系统要替换的机器,当晚做了rsync同步,早上检查发现已同步完成,直觉告诉我应是有问题的,不可能这么快,查看总共才同步300多G。
查看日记发现大量错误信息(Permission denied ),如下。根据提示应该是权限不足导致的。继续进一步的检查发现原来是配置文件,增加uid = vmail。
该选项指定当该模块传输文件时守护进程应该具有的uid。再测试同步正常~

rsync: send_files failed to open "b/bxxxxx.com/1/1/.201107/cur/1311208253.M550934P15909V0000000000000811I00000000158482F8_0.mail.umail32.xxxx.com,S=291295:2,S" (in backup): Permission denied (13)

使用mysqldumpslow分析慢查询日志

作者:linux120 发布时间:November 29, 2012 分类:服务器维护

事务处理时经常会有用户反馈网站(php+mysql)访问非常慢,有些其实是服务器上某些运行比较慢的sql语句引起的过度资源占用。
我们可以通过mysqldumpslow分析下慢查询的日志。默认的慢查询日志并没有开启,因为开启该功能相应的也会占用服务器一定资源,一般是在分析时开启分析完后就关闭了或让该功能定期运行下。开启该功能需要在my.cnf配置文件中加入:
long_query_time = 1 #查询时间为多少时被记录下来,单位为秒。
log-slow-queries = /usr/local/mysql/var/slow.log #被记录下来的日志存放的路径。
log-queries-not-using-indexes #记录下没有使用索引的sql查询。
保存重启下服务。
然后执行命令分析下日志:
mysqldumpslow -s c -t 10 slow.log

s参数就是按照某一种顺序Order。c参数为查询query的次数,t n参数即top n前面的n条数据。
s后可加的参数还有:c,t,l,r和ac,at,al,ar,分别表示query的次数,返回top n条的数据,lock的时间,return的记录数。参数前加“a”表示倒序过来。

命令返回信息类似于:
Count: 3888 Time=0.00s (0s) Lock=0.00s (0s) Rows=1.0 (3969),
lovhome1[lovhome1]@localhost
select id,name from goods_class where class_id=N order by order_id desc,id desc limit N,N
该方法可以查找出query慢的用户,可以关闭它,以免影响其他用户的正常资源使用,保证服务器的稳定运行。

Linux使用Iptables防范半连接攻击

作者:linux120 发布时间:November 27, 2012 分类:服务器配置

#!/bin/bash

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_conntrack_ftp

rm /root/.dyn*

echo "Setting kernel tcp parameters to reduct DoS effects"

#Reduce DoS'ing ability by reducing timeouts

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time

echo 1 > /proc/sys/net/ipv4/tcp_window_scaling

echo 0 > /proc/sys/net/ipv4/tcp_sack

echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog

#ANTISPOOFING

for a in /proc/sys/net/ipv4/conf/*/rp_filter;

do

echo 1 > $a

done

##

#NO SOURCE ROUTE

for z in /proc/sys/net/ipv4/conf/*/accept_source_route;

do

echo 0 > $z

done

#SYN COOKIES

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#echo $ICMP_ECHOREPLY_RATE > /proc/sys/net/ipv4/icmp_echoreply_rate

echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

echo "1" > /proc/sys/net/ipv4/conf/all/accept_redirects

echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

# NUMBER OF CONNECTIONS TO TRACK

echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max

# Set default policies

/sbin/iptables -P INPUT ACCEPT

/sbin/iptables -P OUTPUT ACCEPT

/sbin/iptables -P FORWARD DROP

/sbin/iptables -F

/sbin/iptables -F INPUT

/sbin/iptables -F OUTPUT

/sbin/iptables -F FORWARD

/sbin/iptables -F -t mangle

/sbin/iptables -X

/sbin/iptables -A INPUT -i lo -j ACCEPT

/sbin/iptables -A INPUT -d 127.0.0.0/8 -j REJECT

/sbin/iptables -A INPUT -i eth0 -j ACCEPT

/sbin/iptables -A INPUT -m state --state INVALID -j DROP

### chains to DROP too many SYN-s ######

/sbin/iptables -N syn-flood

/sbin/iptables -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN

/sbin/iptables -A syn-flood -j LOG --log-prefix "SYN flood: "

/sbin/iptables -A syn-flood -j DROP

Nginx简单web方向代理

作者:linux120 发布时间:November 27, 2012 分类:服务器配置

server
{
listen 80;
server_name proxy.linux120.com twitter.com www.twitter.com;

location / {
proxy_pass http://twitter.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}