Yousri

Yousri@Twitter

 

问题背景:

最近十天来连续两次遇到服务器网络出现“抽风式”故障—公网网络不定时突然自动down掉(如果要说有特别点最多就流量大点 但也并非常啊)无法连接,还好局域网网络正常服务器系统本身服务也没发现异常情况,也没查看到特别异常的log记录,都只能通过局域网服务连接执行service network restart重启网络服务才能恢复正常,觉得实在比较诡异。觉得怀疑会不会网卡有问题,后来同事提醒下进一步觉得应该是网卡驱动兼容性问题。
环境:OS:CentOS5.5 64Bit 网卡:Broadcom Corporation NetXtreme II BCM5709 系统自带的默认驱动bnx2:2.0.2

网上Google了下据说是RH系列相关系统自带的Broadcom NetXtreme II BCM 5709 驱动有BUG 涉及到关于ACPI电源管理的问题。这么一来网上肯定自然也有相应的修复办法(有人提问题最终肯定有答案,而且这有如电视剧里演的有案件最终肯定有结果不然不可能演)。故在自己的地方简单记录再次警惕自己下…

解决措施:

方案一、系统启动内核加载时停用ACPI电源管理系统 修改相应的Grub.conf引导程序配置文件:(此方案个人未曾尝试过 因为毕竟是在线生产环境还是比较担心不靠谱)

vim /boot/grub/grub.conf
title CentOS (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 acpi=off #内核引导行最后添加acpi=off关闭
        initrd /initrd-2.6.18-194.el5.img

方案二、去除使用系统自带的网卡驱动,手动安装更新网卡驱动。(最后选择此方案进行修复待后续观察效果…)

1、先确认当前驱动版本:

modinfo bnx2  #或直接ethtool -i eth0 可以查看到固件版本
filename:       /lib/modules/2.6.18-194.el5/kernel/drivers/net/bnx2.ko
version:        2.0.2
license:        GPL
--------------------------------------------------------
ethtool -i eth0
driver: bnx2
version: 2.0.2
firmware-version: bc 4.6.4
bus-info: 0000:01:00.0

2、下载最新网卡驱动:http://www.broadcom.com/support/ethernet_nic/netxtremeii.php

3、安装更新驱动:

unzip linux-6.0.53.zip #解压驱动程序其中已包括源代码及rpm包
cd Server/Linxu/Driver
rpm -ivh netxtreme2-6.0.53-1.src.rpm #解压出包源码
   1:netxtreme2             ########################################### [100%]
cd /usr/src/redhat/SPECS/
rpmbuild -bb netxtreme2.spec #重建生产对应系统的rpm包
cd ../RPMS/x86_64/
rpm -ivh netxtreme2-6.0.53-1.x86_64.rpm #安装网卡驱动

4、网卡驱动切换:

vim change_driver.sh
rmmod bnx2
modprobe bnx2
chmod 755 change_driver.sh
./change_driver.sh & #后台执行脚本
注:正常情况网络会出现中断一会重新加载完成会自动恢复,如果出现异常未能自动恢复可能需要重启服务器使系统完成重新加载新网卡驱动

5、核实更新后当前驱动版本:

modinfo bnx2 #或直接ethtool -i eth0 可以查看到固件版本
filename:       /lib/modules/2.6.18-194.el5/updates/bnx2.ko
version:        2.0.18c
license:        GPL
---------------------------------------------------------
ethtool -i eth0
driver: bnx2
version: 2.0.18c
firmware-version: bc 4.6.4
bus-info: 0000:01:00.0

至此,能做基本处理,对于自身环境后续就是还有待再继续观察验证是否是此问题,不定时问题是否还依旧。就比如同事后来置疑到固件版本还是没升级上来,还是4.6.4担心还会有问题。但因为对此情况网上貌似有人测试过单单升级固件版本还是不见效果(来源见参考链接2),故还是先更新驱动看看,真还是依旧有问题的话再找其他招数咯

参考链接:
http://www.ourlinux.net/2009/11/25/1136.html
http://www.bugx.org/136

 

Sphinx:http://www.sphinxsearch.com/
Coreseek:http://www.coreseek.com/

一、简介:

Coreseek是基于sphinx更完善支持中文搜索功能。故其原理同sphinx,如下:

1、sphinx的两个主要进程indexer和searchd。
indexer任务是从数据库(或者其他的数据源)收集原始的数据,然后建立相应的索引。
searchd则是通过读取indexer建立的索引来响应客户端的请求。

2、sphinx工作前提:配置文件修改
a、需要让其获取数据源从何而来(即:配置source信息)
b、建立索引,对数据源的哪部分数据进行索引等详细信息(即:indexer的所有信息)
c、执行indexer生产索引,最用才启用searchd服务

3、应用主要是通过api接口实现,支持php、perl、python及ruby等语言调用。

二、系统环境:

最好使用中文环境utf8
locale查看
修改/etc/profile 文件添加 export LC_ALL=zh.CN-UTF8

确认autoconf、automake安装可执行下
autoconf
automake

三、软件编译:

wget -c http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.13.tar.gz
tar zxvf coreseek-3.2.13.tar.gz
cd coreseek-3.2.13/mmseg-3.2.13
./configure --prefix=/usr/local/mmseg
make && make install

##中文分词测试,如果显示不正常,请检查当前环境下的locale和UTF-8中文字符显示设置

/usr/local/mmseg/bin/mmseg -d /usr/local/mmseg/etc src/t1.txt

根据需要编译:

#只支持xml源数据源
./configure --prefix=/usr/local/coreseek --without-python --without-mysql --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/
make && make install
#执行测试
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx-min.conf.dist
#支持Mysql数据源
./configure --prefix=/usr/local/coreseek --with-mmseg=/usr/local/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mysql=/usr/local/mysql --with-mysql-includes=/usr/local/mysql/include/mysql/ --with-mysql-libs=/usr/local/mysql/lib/mysql/
make && make install

可能遇到问题处理:

1、提示config.status: error: cannot find input file: src/Makefile.in
执行以下命令

aclocal
libtoolize --force
automake --add-missing
autoconf
autoheader
make clean

注:个人只运行下autoconf及automake即通过

2、Linux环境下,如遇到pthread问题,请先直接执行以下指令在进行configure前:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH

3、如果出现undefined reference to `libiconv’的类似错误,可以按照如下方法处理:
方法一:(Linux使用)
直接执行:export LIBS=”-liconv”
然后再次configure后,进行编译安装
方法二:
首先configure,然后vim src/makefile
在其中搜索lexpat,在其后加上 -liconv
修改后该行应该为:-lexpat -liconv -L/usr/local/lib
然后再次make
方法三:
#首先configure,然后vim config/config.h
在其中搜索USE_LIBICONV,将其后的1修改为0
然后再次make

四、文件配置:(/usr/local/coreseek/etc/csft.conf)

a、数据源(这里以mysql数据为例 也可支持xml方式)

source sphinx
{
sql_host = 192.168.1.100   # mysql服务器ip
sql_user = sphinx	    # mysql用户名
sql_pass = sphinx	    # mysql密码
sql_db = sphinx	    # mysql数据库名
type = mysql		    # 数据源类型
sql_port= 3306		    # optional, default is 3306
sql_query_pre= SET SESSION query_cache_type=OFF
sql_query_pre= SET NAMES utf8;
sql_query = SELECT * FROM documents WHERE id=$id	# 具体数据列
}

b、索引任务:

index sphinx_test
{
source   = sphinx
path   = /usr/local/coreseek/var/data/sphinx
docinfo   = extern
mlock   = 0
morphology   = none
stopwords   =
min_word_len  = 1
charset_type  = utf-8
# 简单分词,只支持0和1,如果要搜索中文,请指定为1
ngram_len    = 1
# 需要分词的字符,如果要搜索中文,去掉前面的注释
min_prefix_len  = 0
min_infix_len  = 1
}

c、搜索服务配置(基本保持默认即可)

searchd
{
port                            = 9312
log                             = /usr/local/coreseek/var/log/searchd.log
query_log                       = /usr/local/coreseek/var/log/query.log
read_timeout                    = 5
max_children                    = 30
pid_file                        = /usr/local/coreseek/var/log/searchd.pid
max_matches                     = 3000
seamless_rotate                 = 1
preopen_indexes                 = 0
unlink_old                      = 1
}

五、服务启动:

执行indexer生成索引:

/usr/local/coreseek/bin/indexer --rotate sphinx_test  #只对sphinx_test索引任务
或
/usr/local/coreseek/bin/indexer --all --rotate  # 针对所有索引任务

可能会出现数据库连接失败错误:

/usr/local/coreseek/bin/indexer sphinx_test --rotate
/usr/local/coreseek/bin/indexer: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory
#先确认下libmysqlclient.so.15是否存在
ldd /usr/local/coreseek/bin/indexer
libmysqlclient.so.15 => not found

解决措施:

vim /etc/ld.so.conf
/usr/local/mysql/lib/mysql/ #最后一行添加
[root@localhost etc]# ldconfig

运行搜索服务searchd:

/usr/local/coreseek/bin/searchd &

六、应用:

API接口程序调用

 

       又是一年终了,又是每年整个互联网都会出现的总结、计划、展望博文飞扬的时候…本来觉得貌似也没什么好回忆、好总结、好计划的~因为回忆中太多苦楚,总结中太多失落,计划却又往往赶不上变化…现实社会的事事难料,自己能把握的就只有大体方向,但这不是短时可言的…… 但翻看到今年初在Qzone记录预计自己的2010年是这样:“可能会有很大变化  可能一成不变  因为还没决定下来是选择离开这里! 嗯” 那就扯淡篇这年的变化吧。

       是的!因为选择离开原来的工作,所以2010对于自己是变化比较大的。简单说就是:这一年里,自己醉瘫了…辞职了…失业过…坐过火车了…出省了…出游旅行过…为求职奔波过…和家里闹过矛盾离家出走过…找到了份新工作…换了新住宿…习惯淡定沉默了…人生第一次负债了…一路走来就这么一个人在路上摸爬着……也学到点有关网站构建架构维护的常识的东西,到现在终于能相对稳定跨年~

       年初时,因为互联网被相关部门搞得不得安宁,再加上自己对公司本身产品前景及某些制度、做法很不看好,还有其他方面的原因不多说(具体可见博客其他相关文章);所以在三月底就辞去算是自己毕业后第一份比较正式的工作。从此成为无业游民一枚,而后刚好又遇到清明假期,便和朋友一起去江西婺源踏青旅行的火车上…一直生活在厦门二十几年,第一次坐上火车第一次出省,但并没有预料中的那么兴奋,也许和刚辞职失业状态心情有关吧~不过和朋友在一起感觉很快乐很幸福很舒畅—这点是可以肯定,婺源很自然、很美、很释怀、很享受……这趟出游总之留给自己挺多美好快乐回忆…

       回来后,朋友都又回归自己奋斗工作中,而自己却随失业时间的延长陷入了自疑与失去斗志激情。期间失业了整整4个月,后来在家里的要求下把岛内租的房子给退了,回老家住(实质省钱),而又刚好遇上炎热的夏天季节,每次就为了那么半个小时、一小时的面试求职机会都得麻烦本就忙碌不堪的父亲跟着自己大清早、中午的奔波,如今回想起来都还觉得辛酸惭愧。同时,在第一次失业那么长时间的情况下确实渐渐担忧与怀疑自己,而且在家里的亲戚朋友邻居的“慰问”关心无不让觉得压力与无地自容啊~其实期间也不是说没人要,只是觉得不想随随便便的就找份自己不喜欢没兴趣的工作应对啊~

       直到八月份才有幸来到现在就职的公司报到上岗。对于这份工作相对自己原来的而言性质、内容变化都还算比较大,而且也挺感激能给自己这么一个在工作中学习的机会,可以说这是自己争取、奢求过来也是有点特别优待给自己机会的。而后先是每天耗三四小时的岛内岛外往返来回赶的车上…这毕竟不是办法,太累人浪费时间~。所以就只好白天上班晚上下班找房的,没料到那么不好找,直到九月份中旬找朋友借了点钱租了现在住的宿舍。从此一切才渐渐稳定有序下来…便继续过上小宅的生活。

       总之,毕业这两年来确实活得有够折腾不顺的,还好自己一个人而已偶尔难过下也就过去了,不过真的累怕了。希望2011年一切能慢慢转过来,稳定往好的改变些,决定争取找个人一起奋斗,哥累了,不想一个人在路上有时太失落无助了…而且就如前段时间感慨的:时间确实不等人的 当你还年轻时想着努力创造资本时 眼睁睁心伤的看着一个个的投向属于他人自己的幸福 当你回头也许很多东西都早已不再那里留守等待你 留下的只有忧伤难过的空后悔 因为这也许就是人生。

       工作方面也重新学习了解到更多有关网站运维各方面的东西,但目前相比之下这些只能称得上明白懂得点肤浅的常识而已。因为“学习任何领域的知识必须达到一定的深度,否则你的知识就是常识。“ 明年继续多学习吧~让自己慢慢有所一定程度提高…自然也希望有机会向别人都取经交流。前些日子总算有点闲钱便入手了之前失业时看到一直想买的几本书。接下来晚上时间就无聊就多告诫自己翻翻书学习学习……

       最后,扯淡点互联网变化,惨不忍睹!Google被逼走了;百度域名解析竟然被纂改;国内最大的互联网公司QQ vs 360扛上了;各式各样的微薄、团购、LBS盛行啊,连饭否都回来了;云存储随处可见啊…移动终端应用汹涌澎湃的来了;中国式的开源产品的发布分享渐渐多起来(貌似每个互联网公司都有所相应产品的贡献啊)、还有就是平台的开放啊。这一年感觉是信息轰炸时代、让人觉得什么都是浮云、一不留神你就显得很out被抛弃似。

       对于2011年啥展望或啥奢求的东西不去想,因为计划总是被变化所吞噬。量力而行,让自己各方面更充实、生活过得更舒坦吧~

© 2011 Yousri's Blog Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量