Some discrepancy between GA and Server stats is normal and to be expected.
Any tracking that relies on remote transmission of data is inherently less accurate than on-server tracking.
A number of things can influence the discrepancy:
1. Some users may have js disabled, as someone noted in this thread.
2. Server loads a partial page, counts a hit, but the GA snippet is not loaded.
3. GA snipped is loaded, but fails to contact GA server for any given arcane network related reason.
4. etc.
Said this, 30% discrepancy is high, actually higher than anything I have observed myself. <15% would me more in the norm.
I would check a couple of things if I had this % discrepancy, such as:
a. is the snippet a legacy (less reliable) version - there has been a couple of different versions over the years.
b. is the snippet placed very down in the page, i.e. a lot of other things need to load before snipped loads (in theory, the most recent versions of the snippet load asynchronously, which means that their position in the page should not have an impact, but I doubt this always works. *Geek alert - a long discussion could be started here on asynchronous transmission, performance impact of GA in various positions etc.)
c. depending on what server stats you are looking at, there may be 'hits' counted when a mere jpg or some other non-page file is loading, while GA counts a hit per actual page). Make sure you are comparing apples with apples.
d. there may be some pages in your site that do not contain the snippet. For example, if you integrated the snippet in a CMS, and then created some manual landing pages or the like, check if such landing pages have the snippet too.
e. check redirects. if you are using any server side 301 or 302 redirects, EVEN IF THE SNIPPET IS THERE, GA will not read it, because the redirect is performed at server side. The server will in most cases count a hit, GA will not.
good luck!
__________________
--
|