Web Services - It's Not As Easy After All

As I need to deal with servers' services for my company, I have to think of solution that's not only able to cope with the expansion of the service, but also able to handle most unwanted scenario gracefully that would not cost the services to break down just because of one failure. On top of that, I do have to find out solution as well on how to improve the throughput of the service.

1. Database Related Issue

Lately I've been trying to look into the reason behind the reason why one of our services have become so slow in producing and output. So in order to do so, I tried to capture some information and display them in the log file. This is not really efficient at all because if possible, I'd prefer the log file to be able to be exported into e.g. an Excel worksheet so that I could use the data to create some statistic.

The captured information shows that one of the reason for such a delay (over 10 seconds to process 1 request, which is not very acceptable at all) was because of database related process. After digging some information from the Internet, I found out that the database that we used is capable of handling millions of data, provided if it is hosted inside a powerful server. In our case, we don't have a powerful server to do the job, so we can't do it. So, what I did was to create a similar table in the database that used to store the information, and then shifted some of the data into that table. The amount of data that been shifted are millions. After the shift, the database related process now take less than half a second to get the job done, which is exactly what we're looking for.

2. Hardware Related Issue

There's another project that I involved needed me to perform stress testing. I tried to search for some stress testing tools on the website, but I could not find a good one yet that could fulfill my requirement. As a result of that, I need to write my own test tool.

I tried to do some stress testing on a service hosted on a server that has 2 Xeon HT processors, and 8GB ECC RAM. As I doing the stress testing, I realized that the statistic and mathematics that I learned during student days can be applied here, so I tried to experiment with different loads of requests, get all the data, and then plot a graph using Excel macro functions. This way, it gives me a better view and I could predict the result even better.

From the testing, I found out one very interesting fact. A 64-bit server with 2 Xeon HT processors & 8 GB ECC RAM would serve a request at half the time of a 32-bit 2 Xeon HT processors & 4 GB ECC RAM server. The service that I tested on these 2 servers is a service related to document conversion. The time taken on the 32-bit server is about 40 plus seconds; it takes only 20 plus seconds to be processed on a 64-bit server. So, it is quite obvious that 64-bit servers is a better choice as compare to a 32-bit servers when it comes to web service implementation. Unfortunately though, although 64-bit machine is widely available now, but software development has not been able to catch-up and fully utilizing the 64-bit platform yet.

Comments

Popular posts from this blog

Yahoo! Messenger voice call & video call disabled, why?

Sport's Injuries - Treatment for bruises

Web Development: Disable, Validate, & Enable Buttons