Question

Our current Information System (complete with path for pictures for records stored in db) has the following specifications:

  • A desktop application was developed in vb.net
  • We use SQL server 2008 r2 as the database
  • Server specs: Intel xeon processor clocking in at 2.40 ghz, 2 GB RAM and Operating system
    of 2008 R2
  • Hamachi VPN for our offshore offices (within country).
  • Office has 6mb dedicated internet connection. Offshore offices have varied ranging from 2mbps to 1mbps

The application made in vb.net is connected to the server via IPaddress(locally) and hamachi public IP (for offshore)(we made sure that the tunnel is direct, not relayed)

We found some weird things while users used the application. There are times where there are 5 users (local and offshore) simultaneously using it, and it went great. Then there would be times where even just three active users (still local or offshore) would suddenly experience extreme slowdown (even for something as simple as a select query to database for verification of log-In).

For offshore clients we tried to ping them in hamachi and found out that each has speed averaging at 500 bytes per reply. Also, loading records that have pictures in them takes a REALLY long time. Wasn't it supposed to be that if you put image path instead of using BLOB, imaging would be faster? (The applications images is stored in a shared folder on the server, then we map that folder to the client unit).

The questions are: based on the given above, how can we exactly speed up the system? Should we improve the server specs? is the internet provider the problem? must we redesign how we manage pictures in the system?

What are the bottlenecks and how do we remedy it?

Are there any other things that I should be aware of?

Was it helpful?

Solution

I can give you only one general advice: when trying to make relational DB access over VPN, check your latency. Even when your band width is great, the latency caused by VPN internals might kill the performance in such a scenario. To my experience is often better to make use of a terminal server solution and run the application only locally - RDP is greatly optimized for VPN access, while relational DB access typically does lots of roundtrips with small sets of data, which does not work well when your latency is high.

If that does not work, the best thing to do is IMHO: measure, measure, measure! The bottleneck can be everywhere and it is almost impossible to solve it at the drawing table.

Licensed under: CC-BY-SA with attribution
scroll top