We've got a setup that we're using for different clients : a program connecting to a Firebird server on a local network.

So far we mostly used 32bit processors running Ubuntu LTS (recently upgraded to 10.04).

Now we introduced servers running on 64bit processors, running Ubuntu 10.04 64bit.

Suddenly some queries run slower than they used to.

In short: running the query locally works fine on both 64bit and 32bit servers, but when running the same queries over the network the 64bit server is suddenly much slower.

We did a few checks with both local and remote connections to both 64bit and 32bit servers, using identical databases and identical queries, running in Flamerobin.

Running the query locally takes a negligible amount of time: 0.008s on the 64bit server, 0.014s on the 32bit servers. So the servers themselves are running fine.

Running the queries over the network, the 64bit server suddenly needs up to 0.160s to respond, while the 32bit server responds in 0.055s.

So the older servers are twice as fast over the network, in spite of the newer servers being twice as fast if run locally.

Apart from that the setup is identical. All servers are running the same installation of Ubuntu 10.04, same version of Firebird and so on, the only difference is that some are 64 and some 32bit.

Any idea??

I tried to google it, but I couldn't find any complains that Firebird 64bit is slower than Firebird 32bit, except that the Firebird 2.1 change log mentions that there's a new network API which is twice as fast, as soon as the drivers are updated to use it.

So I could imagine that the 64bit driver is still using the old API, but that's a bit of a stretch, I guess.

Thanx in advance for any replies! :)

link|improve this question
Using the 32bit Ubuntu on the same server runs fast, so it's not a hardware problem. – lyle Jul 14 '10 at 4:50
Looks like I should be more careful what I write. :) The 32bit Ubuntu we tried on this server was 9.10, after trying 10.04 on the same server, it was slow again. So on this server Firebird is slow when running Ubuntu 10.04, regardless of whether it's 32bit or 64bit. – lyle Jul 14 '10 at 7:53
feedback

2 Answers

are other network transactions slow on the 64 bit servers? Could be something as simple as a bad or outdated network driver.

link|improve this answer
Nope, I checked the ping response time and the download speed, both are way better on the 64bit server compared to the 32bit one. – lyle Jul 12 '10 at 7:47
feedback

Make sure the following things on old and new servers

1)check window scaling on old and new servers

2)the read and write buffer for a connection

the size of buffers can be tweaked as required

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

check for these variables

these specify the maximum default memory buffer usage for all network connections in kernel

net.core.wmem_max = 131071

net.core.rmem_max = 131071

net.core.wmem_default = 126976

net.core.rmem_default = 126976

these specify buffer memory usage specific to tcp connections

net.ipv4.tcp_mem = 378528 504704 757056

net.ipv4.tcp_wmem = 4096 16384 4194304

net.ipv4.tcp_rmem = 4096 87380 4194304

the three values specified are " min default max" buffer sizes. So to start with linux will use the default values of read and write buffer for each connection. As the number of connection increases , these buffers will be reduced [at most till the specified min value] Same is the case for max buffer value.

These values can be set using this sysctl -w KEY=KEY VALUE

3) check other tcp networking parameters

Try these

on old server

sysctl -a | grep ^net.ipv4 >s1

on new server

sysctl -a | grep ^net.ipv4 >s2

now do a diff of files s1 and s2 (after copying s2 to old server

diff s1 s2

This will show difference in parameters

4) check status of iptables iptables -L iptables -t nat -L on both servers

5) also check status of selinux

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.