一、 故障现象
近日,单位采购了一套“药房药库管理系统”,该系统基于WEB模式、采用JAVA语言开发,运行在VPN环境:即数据库在本部的服务器上,分支机构通过VPN访问。在试用了一段时间后,分支机构的员工反映:软件运行的速度很慢,有时几乎打不开网页进行操作。马上联系软件开发工程师赶到现场,排查故障。
软件开发工程师现场测试后,认为不是软件设计的问题,他们的系统采用JAVA语言,基于WEB模式,每一页的数据传输量不超过30K,而且在数据上传的模块已作了相应的技术处理。看来,问题是出在本部或者是分支机构的网络上。
二、 网络结构分析
中心本部的局域网是二层结构,没有划分VLAN,采用静态IP的ADSL方式上互联网,带宽为4M,并在ADSL MODEM后面加了个“网神”防火墙(F3型),通过防火墙的路由功能共享上网;分支机构的网络结构与本部的差不多,也部署了“网神”防火墙(F2型),是动态IP的ADSL,带宽为2M 。分支机构与本部是通过两个防火墙建立的VPN相联,所有的应用系统的数据库都部署在本部的服务器上。网络拓扑图见附图。
三、 故障点排查
我单位的VPN是通过硬防火墙建立的,硬防火墙的速度比软防火墙的快得多,但其传输速度、质量仍取决于ADSL的带宽 。因此,决定先检查分支机构的网速:在分支机构的收费电脑上PING南宁的电信服务器A(笔者平时测网速都以PING南宁电信服务器的值为标准) ,得到的PING值让人大吃一惊,居然达到了3000MS,这样的网速无疑是很慢的。于是在F2防火墙上关闭了其它用户,只留下收费、药房、药库三个用户。此时三个用户使用2M的带宽,应该是足够了。运行单位的内部网站,运行速度很快,几乎没有停顿感。再次运行药房药库系统,虽然系统可使用了,但其速度仍然不能令人满意。会不会是连接服务器的网线有问题?立刻打电话叫在本部的同事更换一条网线。可更换网线后,系统运行的速度仍无根本上的改变。难道是本部的服务器性能不能满足需求?可服务器是2006年底才购买的四路服务器IBM X460,有2个CPU,4G内存,并做了RAID5,在VPN环境下运行“药房药库管理系统” 应该是毫无问题的。仔细想想,恍然大悟:本单位的内部网站是浏览型的,其传输的数据量很小,在2M的带宽下访问是毫无困难的;而“药房药库管理系统”则不同,在分支机构的三个用户在录完数据后都要向本部的服务器上传数据,其传输量大概是30K/S,而2M的ADSL的上传速度是80K/S。难道要增加分支机构的带宽才能解决问题?这太浪费了,不是解决问题的最佳办法。看来,只有继续排查了。
为了从根本上解决问题,仔细研究起网络拓扑图,将网络拓扑图分成了4段链路,逐段分析:PING分支机构的网关,PING值是1MS,说明①段链路没问题,又PING南宁的电信服务器,PING值是20MS,很正常,②段链路也没问题。看来,问题不是出在分支机构的网络上。再对③段链路进行测试,此时的数据流向是①②③,先PING B,这是电信局分配给本部的网关,所得的PING值为20MS,且无断行、丢包的现象,这说明了从分支机构到电信局端是没有问题的;再PING C。这个IP是本地电信局分配给本部的静态IP,它需要设置在本部防火墙F3的外网口f2上,f2通过一根网线与ADSL MDOEM相联。所得的PING值为30MS,应该说这个PING值是很正常的,但断行、丢包的现象很严重。可以断定,故障就出现③链路上。在这段链路上的传输介质是ADSL MDOEM、网线、防火墙,本着先易后难的处理原则,先检测网线。于是,又打电话给本部的同事更换网线,然后再PING,情况照旧,这说明了不是网线的问题。现在只剩下ADSL MODEM、防火墙了,而防火墙的质量是没问题的,因此决定检测ADSL MODEM。致电本部的同事,叫他将ADSL  MODEM与防火墙断开,直接联入一台PC机,并将电信局分配的IP及网关IP填在PC的“本地连接”上,此时,PC便可直接使用互联网。再PING D,PING值达到了20MS,几乎没有断行、丢包的现象,这证明了DASL MODEM也是没问题的。这可奇怪了,难道真的是防火墙有问题?想来想去,不得其解,万般无奈中,决定再仔细检查一上防火墙的配置。于是叫同事再接上防火墙,在分支机构远程登录防火墙F3的管理界面,仔细检查F3的设置,当检查到“端口设置”时,看到:内网口f3(防火墙与交换机的联接口)设置为强制全双工、100M,而外网口f2(防火墙与ADSL MODEM的联接口)为默认设置——自适应。心里一亮,会不会是两个端口的工作模式不一致引起了故障?试着把外网口f2改成强制全双工、100M,再PING D,惊喜地看到情况有了根本上的改变:PING值达到了40MS,而且几乎没有了断行、丢包的现象了;又PING本部的服务器,PING值达到了60MS,也几乎没有了断行、丢包的现象了。立刻运行药房药库管理系统,速度快了许多,只需一分半钟就可处理完一单业务,现在的速度完全达到了设计要求。哈,终于真正解决了故障。为杜绝隐患,将分支机构的防火墙F2的LAN口、WAN口都设置为强制全双工、100M模式。
四、故障原因解析
当初在配置本部防火墙F3的端口时,由于本部交换机的所有端口都设置为强制全双工、100M,所以也将防火墙内网口f3强制全双工、100M的模式,但却忘了将外网口f2也设置为强制全双工、100M的模式,而是保留了默认设置,致使外网口f2在工作中不能向强制全双工、100M的模式适应而自动协商为半双工模式。我们知道,全双工100M链路模式中,数据发送、接收可同时进行;而半双工100M链路模式中,数据发送、接收不能同时进行。在分支机构运行药房药库管理系统后,发出的数据请求经外网口f2流向本部服务器,取得的数据再经外网口f2返回分支机构,此时的数据流量将近为30K/S,此时对本部而言,是上行流量;同时,在本部有70多台电脑在使用互联网,其下行流量之大是可想而知的。由于外网口f2自动协商为半双工,导致了数据请求、数据返回不能同时进行,数据流不对称,造成了外网口f2很繁忙,传输效率低,致使药房药库管理系统运行速度很慢。

文章如转载,请注明转载自:http://www.5iadmin.com/post/406.html