1

I've got a really weird situation I'm beating to solve. A performance problem which looks really like an empty waiting sequence set in code (while it probably isn't so).

I've got a pretty powerful dedicated server (10 GB RAM, eight Xeon cores, etc) running Ubuntu 10.04 with all the functionality services (except OpenVPN server used to provide secure access to clients) deployed in separate VirtualBox (vboxheadless) machines (one for the company e-mail server, one for web server and one for accounting/crm server (Firebird + proprietary app server working with Delphi-made clients)).

CPU load (as "top" says) is almost always near zero. Host system RAM is close to 100% usage but not overloaded (as very little swapping gets used, and freed (by stopping one of VMs) memory doesn't get reused any quickly). Approximately 50% of guests RAM is used. iostat usually shows near zero %util. Network bandwidth seems to be underused.

But the accounting/crm client (a Win32 Delphi application run on WinXP machines) software works hell-slow with this server (and works much better using an inside-LAN Windows server).

I just can't imagine what can make it be slow if there are so plenty of CPU, RAM, HDD and bandwidth resources available on clients and on the server even in their hardest moments.

Saying bandwidth is underused I not only know that clients and the server are connected to the Internet with a bigger channels than really used (which leaves the a chance they may have a bottleneck of a sort on the route between them), I've tested bandwidth between clients and the server by copying files among them.

Ivan
  • 3,288
  • 19
  • 48
  • 70

1 Answers1

1

I'm going to guess that the Delphi accounting application is using SMB to connect to the server. Certain types of applications use file-based databases : Access, Outlook PSTs, FoxPro, BTrieve, some others. These typically perform terribly when the client and server are separated by WAN links - even if it's a fast WAN link, the latency kills you. This is contrasted by applications that use ODBC and a SQL driver for their back-end connectivity; those can deal better with some latency.

The fact that you say this works fine when the server is on the LAN really points to this as the problem. So, there is no 'fix'.

  1. Keep that single application on your LAN or
  2. Build a Windows TS inside your hosted environment so that your users can run the application, but the access from the app-tier to the DB tier is low-latency. or
  3. Re-write the application, maybe with a web front-end. Probably a non-starter.
mfinni
  • 35,711
  • 3
  • 50
  • 86
  • 0. It doesn't use SMB/filesystem for data access. The server part is Firebird + a "proprietary BLOB" middleware. – Ivan Nov 16 '10 at 20:24
  • 1. I've made an experiment by launching a client on the same VM with the server by using a pervert mix of Wine and X-over-SSH forwarding, so only window graphics is transmitted over the network, the result was nearly identical. – Ivan Nov 16 '10 at 20:25