二蛋 发布的文章

Linux time_wait 过多的解决方法

今天在查看服务器负载时发现time_wait 非常的高

# netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
      1 established)
      1 State
      6 CLOSING
     11 LAST_ACK
     18 LISTEN
     19 FIN_WAIT1
     36 SYN_RECV
    205 FIN_WAIT2
    296 ESTABLISHED
   7202 TIME_WAIT

解决方法:

1、编辑 /etc/sysctl.conf 文件:

net.ipv4.tcp_syncookies = 1
#开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭

net.ipv4.tcp_tw_reuse = 1
#开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭

net.ipv4.tcp_tw_recycle = 1
#开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭

net.ipv4.tcp_fin_timeout = 30
#修改系统默认的 TIMEOUT 时间

然后执行

/sbin/sysctl -p

使修改生效。

- 阅读剩余部分 -

iptables: Setting chains to policy ACCEPT: security raw nat[FAILED]filter

今天在配置Linode VPS上的Centos 6.4系统的防火墙的时候,遇到以下错误:

Setting chains to policy ACCEPT: security raw nat[FAILED]filter

原因是由于Linode官方在iptables里加了一个security的规则链,但Centos不支持。

解决方法:
编辑/etc/init.d/iptables,找到:

for i in $tables; do
    echo -n "$i "
    case "$i" in

在“case "$i" in”下面插入:

  security)
    $IPTABLES -t filter -P INPUT $policy \
        && $IPTABLES -t filter -P OUTPUT $policy \
        && $IPTABLES -t filter -P FORWARD $policy \
        || let ret+=1
    ;;

- 阅读剩余部分 -

飞飞影视系统2.x自定义播放页静态路径

1、找到 /Lib/Lib/Action/Admin/CreateAction.class.php 第361行

//路径替换与生成
$player_dir_ji = preg_replace('/play-([0-9]+)-([0-9]+)-([0-9]+)/i','play-$1-'.$arr_sid[1].'-'.($pid+1).'',$player_dir);

修改为:

//路径替换与生成
$player_dir_ji = preg_replace('/([0-9]+)-([0-9]+)/i',$arr_sid[1].'-'.($pid+1).'',$player_dir);

2、找到 /Lib/Common/common.php 第777行

//播放页静态生成结构
function ff_play_url_dir($id,$sid,$pid,$cid,$name){
    $playdir = str_replace_dir(C('url_play'),$id,$cid,$name);
    if(C('url_html_play') == 2){
        $playdir .= '-'.$id.'-'.$sid.'-'.$pid;
    }    
    return $playdir;
}

修改为:

- 阅读剩余部分 -

Apache的两种工作模式

查看Apache当前工作模式

# service httpd -l
Compiled in modules:
  core.c
  mod_authn_file.c
  mod_authn_default.c
  mod_authz_host.c
  mod_authz_groupfile.c
  mod_authz_user.c
  mod_authz_default.c
  mod_auth_basic.c
  mod_include.c
  mod_filter.c
  mod_log_config.c
  mod_env.c
  mod_mime_magic.c
  mod_headers.c
  mod_setenvif.c
  mod_version.c
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_scgi.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c
  mod_ssl.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_suexec.c
  mod_cgi.c
  mod_negotiation.c
  mod_dir.c
  mod_actions.c
  mod_alias.c
  mod_rewrite.c
  mod_so.c

从以上结果可知,当时httpd工作在prefork模式下。

prefork模式
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于 Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将 MaxClients 设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。

worker模式
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的 ThreadsPerChild 指令,和控制允许建立的总线程数的 MaxClients指令。

prefork和worker模式的切换
1.将当前的prefork模式启动文件改名

mv httpd httpd.prefork

2.将worker模式的启动文件改名

mv httpd.worker httpd

- 阅读剩余部分 -

ext3文件系统子目录个数限制

今天网站生成静态时一直提示"缓存文件写入失败" ,各种改权限,删文件等等。最终还是问题依旧。突然看到flashfxp 左边文件列表上显示的目录个数为31998,随手百度了一下,结果发现 ext3 文件系统限制子目录个数为31998个,ext4无限制!蛋疼啊。虽然有网友给出了将ext3无痛转换为ext4的方法,但是还是害怕文件丢失。这个实在伤不起。无奈只好修改生成方式了。特记录之,以后坚决不用蛋疼的ext3

参考资料:
http://en.wikipedia.org/wiki/Ext3