升级到Ubuntu 10.04后,与Firebird 2.1的networking连接变慢了

我们已经为不同的客户端设置了一个连接到本地networking的Firebird服务器的程序。

到目前为止,我们大多使用运行Ubuntu LTS的32位处理器(最近升级到10.04)。

现在我们介绍运行在64位处理器上的服务器,运行Ubuntu 10.04 64位。

突然间一些查询运行得比以前慢。

简而言之,在本地运行查询在64位和32位服务器上都能正常工作,但是当通过networking运行相同的查询时,64位服务器突然变慢了。

我们使用Flamerobin中运行的相同的数据库和相同的查询,对本地和远程连接到64位和32位服务器进行了一些检查。

在本地运行查询需要的时间可以忽略不计:64位服务器上为0.008秒,32位服务器上为0.014秒。 所以服务器本身运行良好。

在networking上运行查询,64位服务器突然需要高达0.160s的响应,而32位服务器响应0.055s。

所以旧服务器的速度是networking的两倍,尽pipe新服务器在本地运行速度要快两倍。

除此之外,设置是相同的。 所有的服务器都运行相同的安装Ubuntu 10.04,相同版本的火鸟等,唯一的区别是,一些是64和一些32位。

任何想法??

我试图谷歌它,但我找不到任何抱怨,火鸟64位比火鸟32位慢,除了火鸟2.1改变日志提到,有一个新的networkingAPI是两倍的速度,只要驱动程序更新使用它。

所以我可以想象,64位驱动程序仍在使用旧的API,但是这是一个有点延伸,我猜。

提前Thanx任何答复! 🙂

是在64位服务器上的其他networking交易缓慢? 可能是一个简单的坏或过时的networking驱动程序。

请确保新老服务器上的以下内容

  1. 检查旧服务器和新服务器上的窗口缩放

  2. 连接的读写缓冲区

    缓冲区的大小可以根据需要调整

    root@x:~# sysctl -A | grep net | grep mem 

    检查这些variables

    这些指定了内核中所有networking连接的最大默认内存缓冲区使用情况

     net.core.wmem_max = 131071 net.core.rmem_max = 131071 net.core.wmem_default = 126976 net.core.rmem_default = 126976 

    这些指定了特定于TCP连接的缓冲存储器使用情况

     net.ipv4.tcp_mem = 378528 504704 757056 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.tcp_rmem = 4096 87380 4194304 

    指定的三个值是“最小默认最大”缓冲区大小。 因此,以Linux开始将使用每个连接的读写缓冲区的默认值。 随着连接数量的增加,这些缓冲区将会减less(最多不超过指定的最小值)。 最大缓冲值的情况也是如此。

    这些值可以用这个sysctl -w KEY=KEY VALUE来设置

  3. 检查其他的tcpnetworking参数

    试试这些

    在旧的服务器上

     sysctl -a | grep ^net.ipv4 >s1 

    在新的服务器上

     sysctl -a | grep ^net.ipv4 >s2 

    现在做一个文件s1和s2(将s2复制到旧服务器之后)的差异

     diff s1 s2 

    这将显示参数的差异

  4. 检查iptables的状态

     iptables -L iptables -t nat -L 

    在两个服务器上

  5. 还要检查selinux的状态