openvpn进程异常退出

2015年2月27日 eric 2 条评论

最近的openvpn服务异常退出了多次,由于当初为了排查问题记录大量的debug日志,导致出现问题的时候想定位问题很难,瞬间日志就被刷没了,进程掉了,瞬间启动、瞬间又掉了,导致很多订单丢了!由于日子文件记录了太多无用信息,不敢通过查日志来定位问题,开始大胆猜测:
1. openvpn 服务器(虚拟机)的 内存不够了 因为只有 2G 内存
2. I/O过高,因为日志开启了 DEBUG 的原因,大量写日志操作,
3. 打开文件描述符不够,系统默认 1024
4. 有人恶意攻击openvpn 服务

根据猜测的4点,开始应对,
1. 首选把openpvn服务器(虚拟机)内存调整到了4G,重启后发现openvpn 服务在启动后的 几分钟还是异常掉,
2. 把日志调整为 error ,openvpn 在启动后 几分钟还是异常退出了。查看日志发现是

Feb 18 17:17:42 localhost openvpn[1219]: qn_anqiu/xxx.xxx.xxx.xx:27351 CRL: cannot read: /usr/local/cine/etc/keys/crl.pem: Too many open files (errno=24) 

3. 有上面的错误日志提示,说明猜想的 第三点是对的。 执行命令:

shell $> ulimit -SHn 65535 
分类: linux 标签: ,

linux 编译内核网卡驱动问题

2015年2月26日 eric 没有评论

由于项目原因,需要从新编译内核,修改 TUN 源码支持共享模式,编译内核期间遇到了网卡驱动丢失问题,废话不多说,直接说解决问题的方式,本人对底层的东西了解很浅,所以解决问题的方式也很笨拙。

OS version : Centos 5.9 kernel : 2.6.18-402 更新内核版本: 2.6.20

由于 yum 里面的内核头文件和卡发包并没有过多的源码 .c 文件。所以只能从 www.kernel.org 下载 相近的版本,有人肯定说了下你还不下个最新的 内核版本,答: 如内核版本跨度比较大,本人担心会出现各种问题,很多老的编译选项新版内核不支持。

首先先下载 原系统的 开发包和头文件:
shell $> yum install kernel-devel kernel-headers
解压 2.6.20 内核压缩包,开始编译内核
shell $> mv linux-2.6.20.tar.bz2 /usr/src/
shell $> cd /usr/src/
shell $> tar jxvf linux-2.6.20.tar.bz2
shell $> cd linux-2.6.20
# 修改源码 更改自己需要的,我修改了 tun 相关的 源码文件。
shell $> make mrproper
# 选择需要的选项和修改的选项,删除多余的选项
shell $> make menuconfig

IBM 3650 M3 原厂RAID卡工具

2014年11月11日 eric 没有评论
[root@D201107071806 ~]# lspci |grep -i sas
01:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS (rev 08) 

是一款非常老的 RAID卡型号,经过google搜索,查到可以一款软件可以监控磁盘状态:

wget http://sven.stormbind.net/mpt-status-rhel/mpt-status-1.2.0-3.el5.centos.x86_64.rpm
                  wget ftp://ftp.hosteurope.de/mirror/fedora-epel/5/x86_64/daemonize-1.5.6-1.el5.x86_64.rpm

执行命令:

mpt-status -p
                  Checking for SCSI ID:0
                  Checking for SCSI ID:1
                  Found SCSI id=1, use ''mpt-status -i 1`` to get more information.  

按照提示执行:

mpt-status -i 1
ioc0 vol_id 1 type IM, 2 phy, 135 GB, state OPTIMAL, flags ENABLED
ioc0 phy 1 scsi_id 2 IBM-ESXS ST9146803SS      B53C, 136 GB, state ONLINE, flags NONE
ioc0 phy 0 scsi_id 3 IBM-ESXS MBD2147RC        SB19, 136 GB, state ONLINE, flags NONE
分类: linux 标签: , ,

linux 分区错误

2014年3月7日 eric 没有评论

今天客服出去实施,发现客户的机器安装的RAID 卡属于软RAID,磁盘在Centos 5.9 系统里认出来的是很长的字符串。按照业务需求分区后发现剩下的分区分给 data 目录,在安装界面无法 分区下去,一直停留在格式化 data 数据盘分区。给我通电话后,我果断先让他把系统分区完,数据盘分区先部分,等进入系统后我远程来看问题。再他不分数据盘后系统正常安装完了跟我远程我发现的问题。 很长字符串为真实RAID卡认出的磁盘,实际的两个磁盘 为 /dev/sda /dev/sdb 是不能挂载操作的。上来我先给他 分区试试,结果报错: WARNING: Re-reading the partition table failed with error 22: 无效的参数. The kernel still uses the old table. 经过google 发现: Run “kpartx -a” after FDISK is completed to add all partition mappings on the newly-created multipath device — EXAMPLE: 然后就用 kpartx [...]

分类: linux, ubuntu 标签: ,

ext4 mysql flush_log 相关

2013年6月7日 eric 2 条评论

最近有一些业务服务器开始使用6.3服务器,顾客开始说访问页面会卡,主要反映在切换页面,数据交互等,开始开始技术排查问题,同样的代码,同样的 apache mysql php 的配置,在 5.5 上运行很正常,在 6.3 运行就会卡。把问题转交到我手上,我开始对操作系统进行了排查。 发现 5.5 服务器内核是 2.6.18,6.3的服务器内核是 2.6.32。查看硬件配置也是一样的,查看两边的 mysql配置文件也一样,这时候我觉得是不是 6.3 与 5.5 开机挂载磁盘的参数不一样呢? 两边都执行 cat /proc/mounts 后发现6.3 多一个 barrier=1 参数 而 5.5 没有,经过 google 发现这个参数是 2.6.22 以上内核开始有的,barrier=1,可以保证文件系统在日志数据写入磁盘之后才写commit记录,但影响性能。但是我们的 mysql 有个参数是每次的操作都要flush日志,这样的话每次就要提交两次,一就是有序写入。我们之前都是无序写入,虽然提高了安全性能,但是降低了性能,权衡之后我还是把 mysql 的参数改为2,这样的话我最多能丢失上一秒的数据,在可控范围内innodb_flush_log_at_trx_commit = 2 这样 6.3 不会出现卡的情况了。

分类: linux, mysql 标签: , ,

linux 重启没响应

2013年4月3日 eric 没有评论

今天IDC有服务器有两个分区变为只读分区,首先处理我想想卸载分区实行修复在挂载,无法卸载,然后考虑到线上服务器有备机,所以索性就直接重启下,执行 reboot 结果没响应,init 6 同样没响应。然后拿起电话准备给IDC 打电话重,后来想下肯定有办法重启的,就 google 了一下,果然找到了办法。执行下面两条命令: # echo 1 > /proc/sys/kernel/sysrq # echo b > /proc/sysrq-trigger 1. /proc/sys/kernel/sysrq 向sysrq文件中写入1是为了开启SysRq功能。根据linux/Documentations/sysrq.txt中所说:SysRq代表的是Magic System Request Key。开启了这个功能以后,只要内核没有挂掉,它就会响应你要求的任何操作。但是这需要内核支持(CONFIG_MAGIC_SYSRQ选项)。向/proc/sys/kernel/sysrq中写入0是关闭sysrq功能,写入1是开启,其他选项请参考sysrq.txt。需要注意的是,/proc/sys/kernel/sysrq中的值只影响键盘的操作。 那么怎么使用SysRq键呢? 在x86平台上,组合键” + SysRq + “组成SysRq键以完成各种功能。但是,在一些键盘上可能没有SysRq键。SysRq键实际上就是”Print Screen“键。并且可能有些键盘不支持同时按三个按键,所以你可以”按住ALT键“,”按一下SysRq键“,再”按一下键“,如果你运气好的话,这个会有效果的。不过放心,现在的键盘一般都支持同时按3个或3个以上的键。 有很多,这里只挑几个来说,其他的可以参考sysrq.txt文件。 •’b’ —— 将会立即重启系统,并且不会管你有没有数据没有写回磁盘,也不卸载磁盘,而是完完全全的立即关机 •’o’ —— 将会关机 •’s’ —— 将会同步所有以挂在的文件系统 •’u’ —— 将会重新将所有的文件系统挂在为只读属性 2. /proc/sysrq-trigger 从文件名字就可以看出来这两个是有关系的。写入/proc/sysrq-trigger中的字符其实就是sysrq.txt中说的键所对应的字符,其功能也和上述一样。 所以,这两行命令先开启SysRq功能,然后用’b’命令让计算机立刻重启。

分类: linux 标签: , ,

多线程更新线上服务器

2012年11月15日 eric 1 条评论

好久没有更新过blog了,把自己写的一个多线程更新的脚本共享给大家,如果有什么疑问过着建议欢迎留言,以后我会把写的一个简单的通过页面更新线上服务的程序open 出来。 写这个脚本当然要说一下场景: 1,有一批web服务器,上面跑着相同的应用,目录结构一样。 2,更新时候注定要备份、删除缓存(不备份小心死人,删除缓存必要啊,不然新上的代码会不生效) 3,更新时必然我们要记录日志,是否连接服务器超时、备份时候成功、更新是否成功。 好了,有了结构,有了日志,有了备份,那么就不怕升级失败了。 先说代码为解决的一个问题,因为要开启多线程,所以日志记录的有点混乱,比如 ip 从 192.166.1.2 更新到 192.168.1.254 ,记录的日志可能第一行记录是 1.2 那么第二行可能记录 1.6 ,不过日志肯定每个服务的连接和返回日志都记录了。 脚本代码主要引入了 paramiko 类,有人说你为何不用 fabric,大哥我用了,他非要执行命令,结合 shell 来执行还是不错的,但是哥我测试想用单个脚本文件执行,我也做过测试,设置 env 环境变量后的确可以,但是比较慢,而且相当麻烦。所以哥我选择了 paramiko 用了一段时间,很稳定速度不错。 废话不多说,那么我们来看下代码: 1 #!/usr/bin/python2.6 2 #-*- coding:utf-8 -*- 3 import paramiko 4 import commands 5 import pexpect 6 import MySQLdb 7 import logging 8 import threading 9 import [...]

分类: linux 标签: , ,

服务器无故重启可能与 acpi有关系

2012年6月20日 eric 没有评论

一影院反应服务器总有时候自己重启,发生故障有2-3天了。接到反应之后 登录到服务器 开始排查 主板温度 CPU 温度 内存利用 等等都很正常。开始检查日志。

检查 last

server $> last

正常重启的 会有 down 字样,无故重启的没有。

分类: linux 标签:

Zimbra 用户登录提示“出现网络服务错误”

2012年6月19日 eric 没有评论

今天邮箱在页面登录 出现网络错误,用客户端登录提示 “The server said: -ERR only valid after entering TLS mod” 从客户端的错误来看是验证出现了问题,登录 Zimbra 服务器,以 zimbra 用户登录,然后查看状态

zimbra@server $> zmcontrol  status

然后常规的是 重启一下服务,看是否能成功

zimbra@server $> zmcontrol restart

Host mail.123.com
        Starting ldap...Done.
Failed.
Failed to start slapd.  Attempting debug start to determine error.
daemon: bind(7) failed errno=99 (Cannot assign requested address)
slap_open_listener: failed on ldap://mail.123.com:389

启动报错,提示 ldap 绑定IP 及端口监听出错。

分类: linux, postfix 标签:

openvpn packet dropped due to output saturation

2012年4月24日 eric 没有评论

openvpn 组建复杂的网络环境有段时间了,由于总出口都是从一台VPN 发送和接收,有时候会发现不稳定的情况,查看openvpn 日志 发现有时候会发现大量的 packet dropped 日志。很多包都呗 drop 掉了,由于我用的不是默认的 UDP 协议,用的是 TCP 协议。

解决办法添加参数:

      tcp-queue-limit 256
      
       此值默认值得 是 64.

     修改后,到目前为止还没有 出现此类 日志。
分类: xen 标签: