昨天跑一个deamon,是关于mongo的操作,使用的是php的mongo模块, mongo-1.1.4; 发现出现了 too many open files的情况, 使用lsof查看了一下进程的情况,出现了很多 sock类型的资源,都是 can't identify protocol 。

例如:
lijunjie   3074 web    3u  sock    0,4      0t0  45174 can't identify protocol

看了一下mongo-1.1.4的源代码,发现在函数php_mongo_connect_nonb(...)中,socket产生的fd,在connect(或因别的错误)出错时,直接return false; 没有close, 所以才出现这种情况。

先修改了一下代码,然后再给官方提个bug吧

按说socket产生的时候都已经指定了sock类型的,所以似乎不需要显示成“can't identify protocol”

相关资料:http://kasicass.blog.163.com/blog/static/3956192010101994124701/
by phpor | 不指定 2011/06/14 14:31 | Linux & Unix | 评论(0) | 引用(0) | 阅读(2529)
问题: httpd server是用web用户执行的,如何才能通过httpd server来做root才能做到事情呢?

我想大概这样可以:
我们知道linux上到可执行文件到属主有一个s位,则该文件就可以seteuid到该用户到权限来做事情,于是写如下测试脚本:
====== agent.c=========
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main(int ac, char ** av) {

seteuid(0);
printf("%d",  geteuid()); // 返回0
// 这里干活就是root的身份了
return 0;
}
========================
编译文件:
gcc -o agent agent.c

生成文件:
-rwxr-xr-x 1 root root 7213 2011-06-13 00:02 agent

修改文件属性:
chmod +s agent
-rwsr-sr-x 1 root root 7213 2011-06-13 00:02 agent

执行agent:
./agent
0

返回结果为0,说明提升权限成功了
------------------------------
问题: 按说如果添加来s位,则非属主用户不应该有写权限,换言之,如果非属主用户有来写权限,则s位应该无效;但事实上, chmod a+w agent 后,提升权限还是成功来,为什么?
by phpor | 不指定 2011/06/13 00:33 | Linux & Unix | 评论(0) | 引用(0) | 阅读(2701)
1. 持续观察当前的负载状况
   sar -q 5 0

2. 查看历史负载状况
   sar
by phpor | 不指定 2011/06/10 18:05 | Linux & Unix | 评论(0) | 引用(0) | 阅读(774)
在使用tail -f命令时是可以及时看到文件的变化的,但是如果再加上一个grep命令,可能看到的就不那么及时了,因为grep命令在buffer写不满时就不输出,可以通过选项  --line-buffered 来搞定,如:

tail -f file.txt | grep something  --line-buffered
by phpor | 不指定 2011/06/09 00:23 | Linux & Unix | 评论(0) | 引用(0) | 阅读(1207)
转自: http://www.51testing.com/?uid-130600-action-viewspace-itemid-220288

为了监控服务器性能
写了个shell脚本,监控服务器的:CPU、MEM、磁盘IO、负载四个指标
记录下来,以备不时之需

sar安装方法:
yum install sysstat


脚本内容如下:

#!/bin/bash
if (( $# != 2))
then
    echo "usage:num1-Please enter the number of script. execution"
    echo "usage:num2-Please enter a value for rest time"
    exit 1
fi

sar -d 0 | head -3 | tail -1 > dev8-0.log
sar -u 0 | head -3 | tail -1 > cpu.log
sar -r 0 | head -3 | tail -1 > mem.log
echo "" > loadAverage.log
for ((i=1;i<=$1;i++))
do
    sar -d 1 | grep dev8-0 | grep -v Average >> dev8-0.log
    sar -u 1 | head -4 | tail -1 >> cpu.log
    sar -r 1 | head -4 | tail -1 >> mem.log
    monitorDate=`date +'%F %T'`
    load=`w | grep 'load average' | awk -F ',' {'print $4,$5,$6'}`
    echo $monitorDate $load >> loadAverage.log
    sleep $2
done


脚本使用方法:
chmod +x monitor.sh(脚本名)
./monitor.sh 5 1
每1秒记录监控数据一次,共记录5次
注:每次运行脚本时,会把上一次的日志清空;


脚本内容解释:
sar -d 1:打印磁盘IO信息,采样间隔1秒
sar -u 1:打印CPU信息,采样间隔1秒
sar -r 1:打印MEM信息,采样间隔1秒
然后再利用一些grep/head/tail/awk等命令取得想要的部份信息;
(使用过程中发现,采样间隔使用0秒时,会出现打印出来的CPU和磁盘IO信息全一样,MEM会有所不同。。。)


脚本运行结果:
./monitor.sh 5 1
运行后,当前目录下会生成下面几个日志文件:

# cat cpu.log
02:21:24 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
02:21:24 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
02:21:25 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
02:21:26 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
02:21:27 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
02:21:28 PM       all      0.89      0.05      1.29      0.23      0.00     97.54
%user 在用户模式中运行进程所花的时间
%nice 运行正常进程所花的时间
%system 在内核模式(系统)中运行进程所花的时间
%iowait 没有进程在该CPU上执行时,处理器等待I/O完成的时间
%idle 没有进程在该CPU上执行的时间

#cat mem.log
02:21:24 PM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
02:21:24 PM   2884304   1267572     30.53    335216    795552   2048248         0      0.00         0
02:21:25 PM   2884428   1267448     30.53    335216    795552   2048248         0      0.00         0
02:21:26 PM   2884428   1267448     30.53    335216    795552   2048248         0      0.00         0
02:21:27 PM   2884428   1267448     30.53    335216    795552   2048248         0      0.00         0
02:21:28 PM   2884552   1267324     30.52    335216    795552   2048248         0      0.00         0
kbmemfree 空闲内存大小
kbmemused 内存使用量大小
%memused 内存使用量百分比
kbbuffers 内存buffers大小
kbcached 内存cached大小
kbswpfree 空闲swap大小
kbswpused swap使用量大小
%swpused swap使用量百分比

# cat dev8-0.log
02:21:24 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
02:21:24 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
02:21:25 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
02:21:26 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
02:21:27 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
02:21:28 PM    dev8-0      0.92      0.22     27.83     30.47      0.02     19.40      6.18      0.57
DEV  sar命令正在监视的块设备的名字。
tps  每秒传输数(或者每秒IO数)
rd_sec/s 每秒512字节读取数
wr_sec/s 每秒512字节写入数
%util  设备饱和度时,会发生此值接近100%。


# cat loadAverage.log

2010-09-16 14:21:24 load average: 0.14 0.14 0.15
2010-09-16 14:21:25 load average: 0.61 0.23 0.18
2010-09-16 14:21:26 load average: 0.61 0.23 0.18
2010-09-16 14:21:27 load average: 0.61 0.23 0.18
2010-09-16 14:21:28 load average: 0.61 0.23 0.18

by phpor | 不指定 2011/06/08 20:24 | Linux & Unix | 评论(0) | 引用(0) | 阅读(445)
分页: 10/41 第一页 上页 5 6 7 8 9 10 11 12 13 14 下页 最后页 [ 显示模式: 摘要 | 列表 ]