Saturday, December 19, 2009

IIS Crash and Hang in SharePoint Websites

My this post truly relates to the people who are suffering with the IIS Crash/Hangs. You know IIS Processes have hanged or crashed when you see lot of Warning messages in the System Logs. The messages descirbes as "The process serving Application Pool "sharepoint_site" failed to respond. The Process Id is "xxxx". " If a series of such errors appear in your System Logs you should use some standard debugging tool to find out what is happening inside.

Basically an Application Pool is a verrtual space where all the requests receved in the server are pooled. The Processor based on it's processing algorithm serves all these request made from the client side computer. Untill then all these processes wait in Application pool. In order to serve any particluar query faster (to enable faster response time) a server uses memory from the buffer or the cache. But this buffer or the cache has a certain memory limit. All this memory allocated in the cache/buffer is in the form of Heap. Heap in particularly is not associated with any index and therefore when too many requests come and if the application is not designed properly the heaps starts overflowing or even fragmenting. This fragmenting in general happens when short term and long term heaps are stored and are not cleared from the application memory.

Now an old school thoery which has very much application in practical. Always free your obects when there use is over. Many developers think that the Sharepoint code comes under the managed code and therefore their is no need to dispose them! This is a mistake that they do because even though the code is from Managed Code the specific objects like the SPWeb and SPSite make reference to the unmanged portion of code which needs to be destroyed using IDisposable Interface.

Once a developer makes sure that all the code is disposed properly he should deploy the same in the server. To check the same he can use a standard tool my Microsoft --> "Dispose Check".

Confirm the same after deploying your modules from the 12 Hive logs.

Thursday, November 12, 2009

Allocation of Database Size for SharePoint Applications

I wanted to share my new finding related to allocating correct available space for SharePoint database.

I was unable to see a better load time of pages when the available database size was less than 30% of the current level.

It was only after I made it 30% auto growth for all the db size in Share Point server I was able to see normal loading of the pages. To make it simpler I give an example here. If your current database size is say 10, 000MB then the availble space should be 10,000MB + 10,000 * 30% of 10,000 which truns out to be 13000MB. Aftre this if you set the autogrwoth property of the database size as 30% then you will experince that the pages are loading faster than before.

Though it was trial and error method through which I learned and took much time to do the same that is the reason I want to share this as it might save a good amount of time for you or just simply avoid this scenarios. The performance impact was immediate and pages where also rendering faster than before.

Monday, October 26, 2009

Building a strong online presence before you start product Promotion & Advertisement

Hi All!!
Before you go out and start marketing your product and services over the world wide web you should make sure that you already have good presence in there. Because when you first start posting or writing about your products or services, a large number of people start searching your name (company's) over the web. To let them know and understand about your brand, your organization, values, vision and products/services offered, you need to create an impression about your organization that helps build your brand.

Do you know where do they look in for you in the web, to know that you are something?!!

These are most probably prominent search engines, web directories, social media space, forums, blogs, wikipedia, criaglists... and the list goes on. Obviously they may land up in any of these above before taking one more step towards you.

But do not forget that, no matter the long this list may be but you need to be present in all these popular medias before you begin the real promotions and marketing for your brand.
After your presence is recognized at all these considerable channels of communication through which people usually connect and rely for trustworthy information you start leaving your competition behind. With this presence you are now ready for a solid head start, and now when your users learn about you through any of your advertisement say an email campaign they realize that this product or brand is well known and exist in most of the respectable digital world channels they know. You will realize that they are going to trust more on your brand rather than any other .

This little preparation which I call web-readiness will add great value to your efforts on web marketing and online promotions. Do remember to keep a track of all your channels through which you communicate with your users. Work out a metric which will help you to understand your customers that directly impacts your marketing efforts. Believe me that when you do an analysis out of all this valuable data you will get some really valuable feedback and insights into building, re-modelling and refining your business and marketing strategy which will propel you to greater heights much above you would have been!

Now your focus should be on building relationship with your customers and once you are able to do that, you experience a loyalty and trust following up for your brand among your customers. Once this is made they will be able to stick to you and wait for your products to hit the market.

This is a simple and solid way of developing a customer following for your brand. Only you need to be very careful in choosing the content and the channel for communication.

Saturday, October 03, 2009

Performance Improvement of Sharepoint Sites

Anyone who is concerned with managing Sharepoint server/sites is well aware that performance management is major concern for Site administrators or managers. This is basically because all the data including the pages in sharepoint server is rendered from the database itself. Because of this each time a request is made more load on the system is incurred as the request is furnished by the database.
There are various suggestions from the Microsoft Sharepoint team. I have customized and used few which worked for me based on the demands of my current implementation and scope of sharepoint 2007.
Rather than going in much details of each workarounds I would like to present them in a simple and straightforward manner so that it becomes easier for all types of audiences to understand.
  1. Reducing the size of the pages - This helps in reducing the load time of the pages especially when they are accessed over the Internet. This will involve working with the Master Pages.
  2. Improving the Farm Architecture - Increasing the number of servers; web front servers, application servers and database servers for proper request response. Load balancing the web front servers in case when the more numbers of concurrent users in the site.
  3. HTTP GZip Compression - Enabling the static (and dynamic as applicable) compression of the page sharepoint site pages using IIS HTTP GZip compression. This works like zipping of your usual office files. It compresses the files before getting released from the server and is then uncompressed at the users end so the response time of the pages becomes faster. You need to analyze the impact of CPU utilization in the concerned servers.
  4. Site Output Caching Strategy - Decide and enable site level output cache which enables the repeated content of the of the pages from being accessed from the server.
  5. Monitoring CPU and Server Logs and User Analytics - Properly managing the server by checking the sharepoint logs, event logs to fix the issues and avoid performance hiccups to the users will ensure proper functioning of the server.

After employing all these measures we experienced a considerable impact on the performance of the portal. The render time, response time and average latency reduced considerably.

I hope when you combine the above with proper backup strategy to backup you site configurations and valuable data timely you will be in a safer position.

Saturday, May 23, 2009

Microsoft warns for SharePoint 2007 SP2 bug

For all those users who are using Microsoft SharePoint Server 2007 should know that there's a bug update by Microsoft. This bug is applicable to the users who are using sharepoint server 2007 product with Service Pack 2 update.

Though Microsoft has confirmed that the bug does not harm any data of your application but only effects the expiration state of the software. Aftre 180 days of installing the SP2 the software expires and renders unusable to the end user.

There is manual fix available to this problem and the company is also working on to close this issue by developing the Hotfix to this problem. Though the next software update is suppose to solve all these issues automatically.

Find more details here --> http://support.microsoft.com/kb/971620

Saturday, April 11, 2009

My Idea of building Language Translator

I am bit sad today... why...?
I saw Gmail with language translation feature. It is like you choose your language based on the country you have chosen during creating your Gmail account(I guess). After you choose your language you what you need to do is to start typing. Begin to type the words of your language in English. Type in English as you would exactly pronounce the word in your language and just press the pace bar you will see that word getting converted into the the actual language word chosen by you.
Great isn't it!!! and simple too!!

Now why I am sad??

I am sad because in one of the organizations where I have been, I gave the idea and a technical implementation detail of building the language translator, Bad that it was rejected. If it would have been successful we would have been one of the first guys to do the same thing. And you know it was for the mobile phone...

Though my idea of translation was quite different from the Google's Gmail team as I thought of doing it a voice based language translation.

Hope I could do something easier and better...

Wednesday, April 08, 2009

Build Spam control functionality to your site using Captchas

Do you own a website? Are you working on a website?? Do you want to make your website spam free? If any of the answers of the above is true you may consider using a captcha service which is open source.

We use captcha when we want to avoid unnecessary requests to the server through the web forms open to the users which can send any data to the server. There are too many scripts, programs which are popularly known as automated bots that can send thousands and millions of unwanted data to the server using those forms.

In order to avoid those forms being utilized by these bots you need to build some validation before the form's data is posted to the server. So the application knows that the this data which is being sent to server is sent by a human and not a bot!!

To do this you can put some images which are being displayed to the users randomly each time the form page is accessed. In these images you need to show some alphanumeric characters and ask the user to type it down in the text placed adjacent to this captcha code. If the data entered by the users is correct based on the captcha then you can be sure that this is a human and not a bot as a program will not be able to make out the numbers displayed in the image.


Try to build this and you could be caught in a heavy duty task.

Now, the Carnegie Mellon University comes with a service "reCaptcha" which enables the the developers to implement this services by simple modification in the code provided in context to your application's technology asp.net, php, java, perl etc.

Each time a user comes to fill up the form he will type the captcha and your code in your web page will connect to the reCaptcha server which will in turn validate the user's authenticity.

Check this out at www.recaptcha.net