Just Be Unreserved!

学无止境。


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

使用mod_limitipconn.so限制apache的并发连接数

发表于 Dec 12 2013   |   分类于 Server   |  

前些日子,部署了nagios监控,部署快完成的时候,遇到一个问题,当时忘了记录具体怎么描述的了,现在只知道是apache的并发连接数超过了限制。最终找到了如下的解决方案。

1、下载mod_limitipconn-0.24.tar.bz2,解压并编译安装。

2、apache编译安装目录为/usr/local/apache2,执行以下两条命令:

1
2
make APXS=/usr/local/apache2/bin/apxs /usr/local/apache2/mod_limitipconn
/usr/local/apache2/bin/apxs -c mod_limitipconn.c -o ./mod_limitipconn.so

3、修改apache的配置文件httpd.conf

找到这一行

1
“LoadModule limitipconn_module modules/mod_limitipconn.so”

去掉注释;

然后增加如下内容:

1
2
3
4
5
6
7
8
9
10
11
ExtendedStatus On
<IfModule limitipconn_module>
<Location /usr/local/nagios/share>
MaxConnPerIP 3
NoIPLimit image/*
</Location>
<Location /usr/local/nagios/sbin>
MaxConnPerIP 3
NoIPLimit image/*
</Location>
</IfModule>

/usr/local/nagios是我的nagios安装目录。

4、重启apache服务。

nagios配置内存检测Shell脚本

发表于 Dec 10 2013   |   分类于 Linux   |  

nagios最强大的一点就是各种所需的监控可以自己定制开发,作为开源软件,其赋予使用者的自主权限非常大,使用者可以非常自由地开发自己所需的功能。nagios附带的没有内存监控脚本,下面就是一个内存监控本。将以下脚本命名为check_mem.sh,拷入$NAGIOS/libexec目录下,然后赋予其执行权限,至于nagios监控配置可参照其他各项监控配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
if [ "$1" = "-w" ] &amp;&amp; [ "$2" -gt "0" ] &amp;&amp; [ "$3" = "-c" ] &amp;&amp; [ "$4" -gt "0" ]; then
memTotal_b=`free -b |grep Mem |awk '{print $2}'`
memFree_b=`free -b |grep Mem |awk '{print $4}'`
memBuffer_b=`free -b |grep Mem |awk '{print $6}'`
memCache_b=`free -b |grep Mem |awk '{print $7}'`
memTotal_m=`free -m |grep Mem |awk '{print $2}'`
memFree_m=`free -m |grep Mem |awk '{print $4}'`
memBuffer_m=`free -m |grep Mem |awk '{print $6}'`
memCache_m=`free -m |grep Mem |awk '{print $7}'`
memUsed_b=$(($memTotal_b-$memFree_b-$memBuffer_b-$memCache_b))
memUsed_m=$(($memTotal_m-$memFree_m-$memBuffer_m-$memCache_m))
memUsedPrc=$((($memUsed_b*100)/$memTotal_b))
if [ "$memUsedPrc" -ge "$4" ]; then
echo "Memory: CRITICAL Total: $memTotal_m MB - Used: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_b;;;; USED=$memUsed_b;;;; CACHE=$memCache_b;;;; BUFFER=$memBuffer_b;;;;"
$(exit 2)
elif [ "$memUsedPrc" -ge "$2" ]; then
echo "Memory: WARNING Total: $memTotal_m MB - Used: $memUsed_m MB - $memUsedPrc% used!|TOTAL=$memTotal_b;;;; USED=$memUsed_b;;;; CACHE=$memCache_b;;;; BUFFER=$memBuffer_b;;;;"
$(exit 1)
else
echo "Memory: OK Total: $memTotal_m MB - Used: $memUsed_m MB - $memUsedPrc% used|TOTAL=$memTotal_b;;;; USED=$memUsed_b;;;; CACHE=$memCache_b;;;; BUFFER=$memBuffer_b;;;;"
$(exit 0)
fi
else
echo "check_mem v1.1"
echo ""
echo "Usage:"
echo "check_mem -w &lt;warnlevel&gt; -c &lt;critlevel&gt;"
echo ""
echo "warnlevel and critlevel is percentage value without %"
exit
fi
more

linux安全加固项(部分)

发表于 Dec 9 2013   |   分类于 Linux   |  

Linux安全加固最基本的原则就是不需要的软件绝对不要装,不需要的服务也绝对不要启用,未知的用户绝对不能存在。操作系统最好是最小化安装,针对需要的服务进行定制操作系统,对于root用户的权限控制一定要严格。最好操作系统定制然后刻盘保存。

禁止root ssh

1
2
vim /etc/ssh/sshd_conf
PermitRootLogin no

禁止空密码登陆

1
2
vim /etc/ssh/sshd_conf
PermitEmptyPasswords no

禁止ftp(可以sftp)

1
2
vim /etc/shadow
ftp:*:15513:0:99999:7:::

防IP欺骗

1
2
vim /etc/host.conf
nospoof on

禁用nobody用户

1
2
vim /etc/shadow
nobody:*:15513:0:99999:7:::

禁止全局产生core

1
2
vim /etc/profile
ulimit -S -c 0 &gt; /dev/null 2&gt;&amp;1

允许某个用户产生core

1
2
3
vim ~/.bash_profile
ulimit -c unlimited
ulimit -c 5120

sysctl -p 报错解决办法

发表于 Dec 8 2013   |   分类于 Linux   |  

Problem Description

Modify linux kernel file

vi/etc/sysctl.conf,then input “sysctl-P”,appear error as the following

1
2
3
4
5
error:"net.bridge.bridge-nf-call-ip6tables"isanunknownkey

error:"net.bridge.bridge-nf-call-iptables"isanunknownkey

error:"net.bridge.bridge-nf-call-arptables"isanunknownkey

Solution:

1
2
3
modprobebridge

lsmod|grepbridge

Linux设置core文件介绍

发表于 Dec 7 2013   |   分类于 Linux   |  

①ulimit -a查看操作系统limit信息,显示结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
core file size          (blocks, -c) 5120

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 240561

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

其中第一行显示的就是core文件的配置信息。

当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core文件记录crash时刻系统信息,包括内存和寄存器信息,用以程序员日后debug时可以使用。这些错误包括段错误、非法指令、总线错误或用户自己生成的退出信息等等。

②设置core文件主要有如下几种方法:

1
vim /etc/profile

添加以下内容:

1
2
3
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
vim /etc/security/limits.conf

注释掉以下内容

1
*               soft    core            0

以上两种方法都是设置禁止系统所有用户产生core文件。
生产环境中,需要对产生的core文件进行调试,因此一般情况下会对core文件进行一些设置。

设置允许某个用户产生core文件,即不限制大小

1
vim ~/.bash_profile

添加下面这行内容:

1
ulimit -c unlimited

③下面是对ulimit这个命令的一些具体描述

ulimit用于shell启动进程所占用的资源,属于shell内建命令

语法格式:ulimit

参数介绍:

-H 设置硬件资源限制。

-S 设置软件资源限制。

-a 显示当前所有的资源限制。

-c size:设置core文件的最大值,单位:blocks

-d size:设置数据段的最大值,单位:kbytes

-f size:设置创建文件的最大值,单位:blocks

-l size:设置在内存中锁定进程的最大值,单位:kbytes

-m size:设置可以使用的常驻内存的最大值,单位:kbytes

-n size:设置内核可以同时打开的文件描述符的最大值,单位:n

-p size:设置管道缓冲区的最大值,单位:kbytes

-s size:设置堆栈的最大值.单位:kbytes

-t size:设置CPU使用时间的最大上限,单位:seconds

-v size:设置虚拟内存的最大值,单位:kbytes

怎样击败360

发表于 Dec 6 2013   |   分类于 IT杂谈   |  

严嵩被抓了之后,徐阶问众人:怎样彻底搬到严嵩?众人你一言,我一语,华丽丽地列出严嵩几十大罪状。徐阶微微一笑……最后,严嵩被以里通外国,叛乱汉奸的罪名处死。

其实我觉得对付360也得用类似的手段。你说严嵩该不该死,当然该,而且必须死!360简直就是严嵩的复刻版。

刘瑾被灭,严嵩北上,长跪夏言府前,言感动遂以嵩为知己,自此严嵩平步青云,结果嵩借曾铣之名,假皇帝之手处死夏言;刘韧与周鸿祎称兄道弟,周遭遇3721声名狼藉,如过街老鼠,而后360初创也算是蒸蒸日上,结果昔日兄弟亲手送刘韧入牢狱。

严嵩一手遮天之时,出现了徐阶、高拱、张居正、戚继光、海瑞、杨继盛等无数名臣贤士;360呼风唤雨之际,腾讯手握船票,百度狼性出击,金山浴火重生。

接下来,各位可以根据严嵩倒台后高拱、张居正双子星亲手缔造的大明中兴,预测一下未来了。

Shell脚本实现服务器单板快速登录切换

发表于 Nov 10 2013   |   分类于 Linux   |  

实际工作中,有很多的服务器,为保证安全性和时效性,一般会取一台跳板机服务器作为外网连接媒介,把其他所有服务器都放在内网,所有服务都通过跳板机提供对外接口,若是要执行线上维护,就都先登录跳板机,然后由跳板机切换登录到其他服务器。如果每次切换都ssh+Server IP,那效率就太低了……

下面是一个效率比较高也比较可靠的方案:

①在跳板机上设置登录到各个内网服务器的ssh证书,ssh登录的时候就不需要再输入密码,直接通过证书加解密会非常方便,安全性也会提高。

②通过以下脚本,实现快速切换登录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
#
# Source function library
case "$1" in
master)
ssh 192.168.10.101
;;
slave)
ssh 192.168.10.102
;;
web1)
ssh 192.168.10.103
;;
web2)
ssh 192.168.10.104
;;
web3)
ssh 192.168.10.105
;;
*)
echo "useage: con {master|slave|web1|web2|web3}"
;;
esac
exit 0

将以上脚本命名为con,放入/bin文件夹下,赋予执行权限,然后就可以使用con master|slave|web1|web2|web3来切换登录到各个服务器了。

如果我是DNSPod的产品经理

发表于 Nov 6 2013   |   分类于 IT杂谈   |  

现在看来,DNSPod的技术、运营和客户满意度在国内都已经处于顶尖的位置,我觉得对于DNSPod这类以技术驱动的公司来讲,尤其是DNSPod是已经发展到现在这种规模和状态,产品经理这个职位其实并不像其他的互联网企业显得那么重要。不过,如果我做了阿D的产品经理,我可能会从以下几个方面去完善现在的DNSPod。

一、我比较看重社区。我觉得阿D应该有自己的社区和论坛,开放的API和功能可以分为几个阶段,alpha,beta,release,standard等,先在社区论坛试用,通过招募测试员进行试用,给产品提出改进意见,然后根据意见的合理性程度进行评估整改。

第三方的项目和插件也可以在社区有更大的发展,甚至通过奖励第三方开发者的方式,让他们与阿D一起给用户们提供更好的服务。我始终觉得一个优秀的产品索要照顾的不仅仅是客户,更是广大的用户。甚至可以邀请一些相关的开源团队或者项目,让他们为阿D的用户开发更好用的插件应用。

二、目前DNSPod的客户群体应该主要还是集中于中小网站、站长和私人博客等,但是仍有许多人选择了其他家的解析服务,我觉得DNSPod可以试着去拓宽自己的客户群体。这就可能牵涉到另一个问题,域名解析无非看重三点:速度、稳定和安全。我觉得阿D的最大的特点,就是“专注”。阿D的解析速度和稳定性,我相信业界应该已经达成了共识,但是这个时候专注既是优势,却也成了劣势,专注于DNS解析领域,有时候会让人对于阿D的安全性会有一定的困惑。这个时候,我觉得阿D需要与一些注明的安全厂商携起手来(仅仅有安全宝可不够喔),加强安全方面的合作和探索。根据这个思路,阿D还可以试着与其他相关的企业去合作,如域名注册商,如CDN厂商,如IDC厂商等等,当然更加少不了电信运营商。

三、移动互联网时代,我觉得有必要做一个Android
HD、iPad和WP HD客户端了,一些在电脑上能完成的操作,通过平板上的移动客户端一样可以实现。手机端屏幕太小,操作起来体验上应该不会好,有短信和微信报警通知就够了。

四、我觉得最好有一个比较好的方式将站长们串联起来,让站长之间加强互动,使阿D的口碑在站长圈子里能够口口相传。阿D可以引导站长们在各自所在的城市做组织一些线下的交流活动,平时做一些技术交流分享;甚至阿D自己也可以做一些城市巡回活动,不需要搞的大张旗鼓,小圈子就可以,类似于GDG那样的。

以上就是我的一些想法,当然都是一些很粗鄙的想法,作为产品小白,这也算是个开始吧,毕竟自己希望以后有机会去做产品。以后咱也算是混产品界的啦……=_=!!!

获取程序所在目录代码解析

发表于 Nov 5 2013   |   分类于 Linux   |  

我觉得,Shell对比其他的编程语言,最大的优势在于每个字符都包含有极大的信息量,其他语言可能要很长很多行代码才能实现的功能,Shell代码一行就能实现;而且一个可用的Shell脚本里几乎每个字符可能都无法更改,一旦更改,就会造成整个脚本不可用(当然,变换实现思路修改了整段代码的除外)。

今天下午熟悉线上环境的巡检脚本,看到这样一段代码,感觉挺有意思的,也很好的印证了我上面的观点。特意择出来分析一下这段代码包含的一些东西。这段代码网上几乎随处可见,而且极其精炼,几乎是改无可改了,呵呵。

这段代码是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
# Resolve links - $0 may be a symbolic link
PRG="$0"
while [ -h "$PRG" ]; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '.*/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`/"$link"
fi
done
PRGDIR=`dirname "$PRG"` #所执行程序所在的目录

第一行是注释,很容易理解;最后一行就是这段脚本所要实现的目标,即获取一个可执行脚本程序所在的目录。

首先从脚本第一行可用代码来解释:PRG=”$0”,这里的PRG指的就是可执行脚本的文件名,当然也可能是指向这个脚本的软链接文件,这个在下面会做判断,暂且按下不表。先看软链接,那么什么又是软链接呢?

Linux下的链接分为两种:硬链接(Hard Link)和软链接(Symbolic Link),我们经常见到的link命令,就是用来创建Linux链接的,link默认创建的是硬链接,加上-s参数就是创建软链接。文件链接是Linux文件系统的一个重要特征。在这个脚本里指的就是软链接。

硬链接引用的文件在文件系统的物理索引,即inode;所以不管你是删除或者移动源文件,硬链接都不会被破坏,它引用的并不是文件在文件结构里的位置。这样的话,用户就不必需要拥有对源文件的访问权限,就防止了误删,只有所有的硬链接引用都被删除之后,才能把文件真正删除。这相当于是为源文件创建了一个别名,实际上源文件和链接文件是同一个文件,用ls -i查看其inode值,可以发现他们是一样的。

软链接有点像Windows里的快捷方式,但又不一样。跟硬链接一样,编辑或者执行软链接文件,就等于是编辑或者执行了源文件。但是软链接文件与源文件是不同的两个文件,软链接文件只是指向源文件的一个指针,删除了软链接文件对源文件没有任何影响,删除了源文件,软链接文件也就没有了任何意义,cat查看的时候会提示文件不存在。另,软链接可以指向文件夹,硬链接却不可以。

紧接着是一个while循环,while [ -h “$PRO” ]; do …… done,参数-h的意思就是判断$PRO是否存在和$PRO是否是一个软链接文件,这个循环的意思就是当$PRO存在并且$PRO是一个软链接文件的时候,执行do …… done之间的脚本。

接下来就是expr这个函数了。这是Linux里一个很重要的命令,一般用于整数值计算,也可用于字符操作。

  1. 整数计算里,运算符两边注意加空格即可,”*”符号要加”\”转义符;
  2. 循环里的expr用于增量计算。循环初始化为0,然后循环值加1,如下面的例子,从(expr)命令接受输出并将之作为输入的循环变量;
  3. expr同样可以进行检测是个字符是否是数字;
  4. 模式匹配。在这个脚本里,expr的作用就是模式匹配,符号就是冒号”:”。
1
link=`expr "$ls" : '.*-> \(.*\)$'`

这行代码的返回的就是”->;”后面的字符串,实际上也就是软链接指向的真实的文件名;

1
2
if expr "$link" : '.*/.*' > /dev/null; then
PRG="$link"

这两行是为了判断$link是否是以”/“开头;

1
PRGDIR=`dirname "$PRG"`

这行就是最后我们所想要的结果了。

至此,这段代码就分析完了。Shell里符号太多,不熟悉的话一眼看上去感觉好蒙啊,实际上每个字符都有很大的信息量,主要还是对这些字符的熟悉程度。

想要进行小说创作应该阅读哪些书籍能够提升能力?

发表于 Nov 3 2013   |   分类于 随笔   |  

昨天下午去参加了蒋方舟小姐的签售会,紧接着晚上就是阎连科老师的签售会,虽然书店离我住的地方非常远,为了等到阎老师的签名以至于回来的非常晚,但是也值了。感觉方舟同学没我想象中的漂亮啊(要骂我请偷偷的),谈吐很优雅很有气质,真正的出口成章,每签一个名,双手把书递给读者的时候都要抬头看着读者,太太太太有礼貌了。不过字写的没阎老师好看,我觉得也没我的好看……

听阎老师讲写作的淘汰,讲“迎光”“借光”“穿透光”三种类型的写作,讲浪费掉的自己最好的写作时光,我听的热泪盈眶;尤其是“最好的写作时光”那段,令人非常的动容。阎老师也是一位非常有趣的人,很好玩儿。

正如方舟妹妹(比我小两个月)讲的那样,阎老师真的是一位非常非常伟大的作家,“神实主义”,真的是特点非常鲜明,《炸裂志》刚看了第一章,我就觉得这书实在是太好了,首先,我得承认这种写作手法,对于我们这些普通人来讲,实在太难学了;不过,理解起来还是并不复杂,而且你会发自内心地觉得这浓浓的原始乡土野性,其实才是真正的阳春白雪。如果题主执意想学习这种风格的话,倒是可以挑战一下。

晚上有位同学向阎老师提了类似的问题,我想说阎老师的回答确实比现在最高票蒋小姐的回答要高好几个档次啊,不过有的人可能会觉得虚了点。阎老师的大意是这样的,不要把自己局限于读哪些书上,自己喜欢读什么就读什么,读金庸一样能成为大家。写作技巧和方法论的提高其实还是浅层次的,写作的关键在于去领悟作者的情怀和意境。举个不恰当的例子,今天下午方舟妹妹说,韩寒要拍电影了,所以就对他有点看法了(求不断章取义,求不借题发挥);但是阎老师却经常兴致勃勃地与人谈论《甄嬛传》和各位小主。所谓艺术,并无高下之分,文学是艺术,绘画是艺术,影视同样也是艺术。用心去体味艺术作品内在的美妙,取其对自己有用的就好,完全不必纠结于读哪些书。

原文链接:想要进行小说创作应该阅读哪些书籍能够提升能力?

1…8910…15
Ailurus

Ailurus

Android Developer

145 日志
13 分类
215 标签
RSS
Github Twitter Facebook Weibo
Links
  • 明哥
  • veaer
  • 程序亦非猿
  • 阿布
  • 区长
  • 卡老师
© 2020 Ailurus
由 Hexo 强力驱动
主题 - NexT.Pisces