近期评论

Archive for 四月, 2015

linux内核调优ip_conntrack

track是跟踪的意思。ip_conntrack是跟踪connect的Linux机制。
Linux内核的ip_conntrack模块会记录每一个tcp数据包的estiablished,timewait,syn_recv等状态。并且默认的timeout是432000秒(五天时间)。系统所能记录的ip_conntrack也是有限的,如果超过了这个限度,就会出现内核级错误“ip_conntrack: table full, dropping packet”,其结果就是无法再有任何的网络连接了。

Read the rest of this entry »

性能调优ip_local_port_range

ip_local_port_range的英文解释是:

The /proc/sys/net/ipv4/ip_local_port_range defines the local port range that is used by TCP and UDP traffic to choose the local port. You will see in the parameters of this file two numbers: The first number is the first local port allowed for TCP and UDP traffic on the server, the second is the last local port number. For high-usage systems you may change its default parameters to 32768-61000 -first-last.

中文的解释网上几乎没有,大部分都是复制粘贴。我来根据自己的理解讲下这个参数的含义。

linux内核参数ip_local_port_range是用来指定TCP或UDP连接时本地端口范围的。这只是字面上的意思。我看到这个参数就有几个疑问?

问题1:服务器高性能调优需要指定本地端口范围吗?一般不是都监听了80或者其他固定端口吗?

要搞清楚这个问题,首先要明白,这个本地端口不是TCP连接中的服务端端口,而是客户端端口。通常客户端端口都是随机分配的。这个参数就是指定这个随机的范围。

问题2:服务端扩大本地端口范围有什么用?

扩大本地端口范围显然是要扩大本地能主动发起的连接数。问题是服务器都是被动接受连接的,要这个干吗?

通常情况下,单纯的静态web服务器不需要指定这个参数,但是如果有数据库,web前端服务器要连接后端的数据库,高并发时,web服务器作为客户端,发起基于TCP协议(通常不是http协议)的连接,必然要大量访问数据库,所以要扩大范围。

另外对于RAC数据库集群和mysql-cluster集群,数据库服务器也要指定这个参数。因为集群中的数据库也会不断的访问其他数据库。

如何使用rpm打包

通常linux环境安装软件一般有两种方式,一种是通过源码编译安装,
另外一种是利用各种现成的rpm,deb等包,结合yum,apt-get等工具安装

第二种方式用的到安装包怎么来的,是有人专门根据源码,针对特定的操作系统进行打包的。这种包有点是安装方便简单,不存在编译报错问题,缺点是兼容性差,要针对不同操作系统制作特定版本的安装包。

这里介绍基本的rpm打包方法。以nginx源码包为例,全部经过自己亲自测试。

Read the rest of this entry »

Openvswitch部署

一、搭建编译环境

 安装编译环境

yum install gcc make python-devel openssl-devel kernel-devel \

graphviz kernel-debug-devel autoconf automake \

rpm-build redhat-rpm-config libtool

  编译rpm建议使用普通用户

  下载创建编译目录脚本

wget ftp://ftp.owlriver.com/pub/local/COLUG//RPM-build-tree.txt

执行脚本

sh RPM-build-tree.txt

将会在当前用户家目录创建如下目录

rpmbuild

├── BUILD

├── BUILDROOT

├── RPMS

├── SOURCES

├── SPECS

└── SRPMS

Read the rest of this entry »

Perl多线程arping

arping是一个基于二层arp协议的ping工具,常规的ping工具是基于第三层即网络层通信机制的ping工具,主要用于测试路由是否可达,而arping是在本地局域网探测目的主机是否可达,最大的优点是可以不受防火墙设置进行探测,因为window7和linux系统自带的防火墙的策略是基于网络层通信机制开发出来的。

下面是用多线程实现探测本地主机,速度和nmap一样快。

Read the rest of this entry »

Perl直接使用任意shell

perl调用shell有三种方式:

通过system,exec函数,shell作为参数传入执行并打印结果;

通过符号反引号,效果和第一种一样。

第1种和第2种方式在每次执行shell时,都必须调用函数或者加特殊符号。

通过调用默认安装好的模块Shell,perl脚本可以透明使用任何shell命令, 不限制次数,无需增加特殊字符。任意shell被当成函数在perl脚本中执行,和perl函数稍有不同的是,调用shell命令时,如果有参数,要在()里面加入;如果没有参数,也必须加空括号(),否则perl会把shell命令当字符串使用。

举例如下:

#!/usr/bin/perl
#use strict;
use Cwd;
use Shell;
#no strict;

print ls();
chdir "/opt";				#change directory
print ls(-a);
print netstat(-antp);

int 和char类型的区别

C代码中,经常吧int和char互相转化,这两个类型是有区别的:

1、char占一个字节,int占4个字节(无论是64位还是32位系统);

2、下面这种赋值结果不同:

char a = '1';                   #a的值是字符1,不是整数1;

char a = '1234';                #a的值还是字符1,不是整数1;

int a='1';                      #a的值是d的ascii码值即49

int a  = '1234;                 #a的值是825373492;

最后一个值为什么是825373492,

Read the rest of this entry »

两台笔记本如何点对点连接

No cable,no AP,just two PC with wireless net adpter,how to communicate ?

没有网线,没有无线路由器,只有两台都带有无线网卡的笔记本。怎么样实现直接互访传送数据呢?

下面一windowsXP为例,win7也可以用类似的步骤实现。

第1步

如下图,在无线网络连接→属性→无线网络配置→添加

Read the rest of this entry »

湖北孝感女孩

2015年2月23日,据网友@China亢龙太子爆料,湖北省孝感市孝昌县白沙镇金港村4组张家桥村,90后女孩张琪被家人裸身囚禁5年。 25日,经网友呼吁和帮助,张琪成功获救,被送往医院。据网友称,张琪在18岁左右未婚先孕,农村的封建思想使张琪的父母无法接受此件事情,后来张琪失去了腹中的胎儿,导致张琪精神失常直至崩溃,家人将其关入破屋囚禁。

 

前段时间,看到这则新闻让我震撼不已。难以想象当事人这些年是如何度过,难以想象这世界上竟然还有这样的父母如此过分地对待自己的亲身骨肉。

Read the rest of this entry »

ICMP分类

ICMP全称internet control message protocol。

这是很重要的协议,通常使用ping工具只是使用了其中一种类型而已。

下面完整分类及说明:

Read the rest of this entry »