تماس با ما

نشانی : تهران خیابان آزادی- روبروی دانشگاه صنعتی شریف- پلاک 454

تلفن : 61903 - 021 - (30خط)
فاكس : 66053652 - 021
صندوق پستی : 1384-13445
پست الكترونيكي : info@samasoft.net

پرتال مشتریان

افزایش سرعت و کارایی(Performance) سرورها و برنامه ها


مقدمه:

بی شک سرعت و کارایی یک نرم افزار که بصورت گسترده به افراد زیادی خدمات می دهد یکی از مهمترین پارامترهای موفقیت در ارائه این خدمات می باشد. اما سرعت و کارایی مطلوب یک سیستم نرم افزاری تنها در گرو کیفیت طراحی و تولید آن سیستم نبوده و عوامل دیگری هم در این امر موثرند. سرور ها و زیرساخت های سخت افزاری، شبکه، پهنای باند شبکه و اینترنت، ویروسها و ورمها، سیستم عامل از این جمله اند. برای روشن شدن این مساله تصور کنید که شما یک خودرو فراری آخرین مدل که تا 300 کیلومتر در ساعت سرعت دارد را خریده اید آیا در یک جاده خاکی محلی پر از دست انداز می توانید با حداکثر سرعت برانید؟ در این مستند نکته هایی که شما برای داشتن سرعت و کارایی مطلوب در سیستم های نرم افزاری باید رعایت کنید یادآوری شده است و راه کارهای عملی و کاربردی برای ارتقا کارایی و سرعت از منظرهای مختلفی چون سخت افزار، شبکه، سیستم عامل و ... ارائه شده است.



توصیه های عمومی

    استفاده از دستگاههای Server Machine برای سرورپایگاه داده ای و وب اکیداً توصیه می شود. این نوع سخت افزارها برای کار در شرایط سخت و پرترافیک طراحی و ساخته شده اند و همسانی و سازگاری قطعات مختلف آنها کمک بسیار زیادی به افزایش کارایی و امنیت داده های شما می کند . سرور ماشین هایی چون HP،Intel، Micro Super و.... توصیه ما سرورهای شرکت HP می باشد. برای انتخاب سروری که مناسب نیاز شما باشد به این لینک مراجعه کنید:
    http://www.hp.com/cgi-bin/sbso/buyguides/tsg_product_select.cgi
    هرگز از کامپیوترهای معمولی حتا با مشخصات عالی برای سرورها استفاده نکنید. این نوع سخت افزارها هم شما را از نظر سرعت و کارایی دچار مشکل می کند و هم خطر از دست دادن اطلاعات را بسیار بالا می برد.
    دستگاه وب سرور و سرور پایگاه داده ایی باید حتماً از هم مجزا باشند.گذشته از مسائل امنیتی بدلیل استفاده این دو سرور از منابع مشترک اکیداً توصیه می شود که برای افزایش سرعت وکارائی این دو سرور از هم جدا باشند.
    بهتر است سرور پایگاه داده ایی مستقیم به سوئیچ (switch) وصل باشد یا بهتر از آن این است که سرور وب و سرور پایگاه داده ای توسط یک کابل کراس 1000MB (از نوع شیلددار وآماده و نه دست ساز) از طریق کارت شبکه 1000MB بطور مستقیم به هم وصل شوند.
    استفاده از defrag software برای اطمینان از صحت ساختار فیزیکی اطلاعات روی هاردیسک سرورها.این کار سرعت خواندن ونوشتن (I/O activity) را افزایش می دهد.Diskeeper یکی از نمونه های مناسب برای این کار است.در صورتی که هارد RAID دارید باید به این مساله بیشتر اهمیت دهید.
    هرگز نرم افزار دیگری را روی سرور پایگاه داده ایی یا سرور وب اجرا نکنید واستفاده نکنید.
    توجه کنید که سخت افزارکاربران شما در کارایی سرور شما تاثیردارد. بطور مثال اگر کاربری دارید که کارت شبکه کامپیوتر او با سرعت 10 است ولی تمامی شبکه شما با پهنای باند 100 کار می کند بخصوص اگر بجای سوئیچ از هاب های معمولی استفاده کنید کندی شدیدی در شبکه و کارایی سرور خواهید داشت.
    در بازه های زمانی پر ترافیک قسمتهایی از برنامه که پردازش زیادی نیاز دارد واستفاده از آنها ضروری نیست را انجام نداده ودسترسی آنها را برای کاربران دیگر غیرفعال کنید(بطور مثال کارنامه کامل را در زمان انتخاب واحد اینترنتی برای دانشجویان غیرفعال کنید) این کار باعث می شود تا کارهای غیرضروری پردازش بیهوده برای سرور شما ایجاد نکنند.
    سیستم عامل و پایگاه داده ای و سیستم های متعلق به شرکت سما سامانه خود را بطور مداوم بروزرسانی کنید ، در آخرین نسخه ها و سرویس پک ها معمولاً مشکلاتی که در نسخه های قبلی از نظر امنیت و کارایی وجود داشته رفع شده است.
    تنها از سخت افزارها و نرم افزارهایی که جواب خود را در بازار پس داده اند استفاده کنید. (Avoid the bleeding edge)
    فایل لوگو یا آرم دانشگاه در صفحه اول وب یا برنامه باید کمترین حجم را داشته باشد. فرمت GIF برای وب و آرمهای تک رنگ و فرمت JPEG برای چند رنگ مناسب است. فایل تصویر را حتما با استفاده از نرم افزارهایی مانند فتوشاب و قابلیت Save for web و استفاده از Low Resolution ذخیره سازی کنید تا کمترین حجم را داشته باشد. حجم مناسب حدود 4 کیلوبایت یا کمتر می باشد.


سخت افزار
• درایورهای سخت افزارهای سرور را همیشه به روز نگهدارید. کنید
• BIOS سرورها باید به روز باشد.

پردازنده (CPU)

    برای انتخاب CPU در سرور ، موردی را انتخاب کنید که Cache L2,L3 بیشتری دارد.
    یک CPU با سرعت 2 گیگاهرتز بهتر از 2 عدد CPU با سرعت 1 گیگاهرتز است.
    هرچه تعداد هسته های یک CPU بیشتر باشد (6 core ,8 core)سرعت بیشتری خواهید داشت.
    اگر پردازش CPU شما بصورت مداوم بالاتر از 80% است شما از نظر پردازنده مشکل داشته و نیاز به CPU سریعتر دارید. پارامتری که در Performance Monitor باید بررسی شود: Processor:% Processor Time

حافظه (Memory)

    حافظه (RAM) بیشتر مساوی است با سرعت بیشتر وعملکرد بهتر. این ارزانترین روش افزایش سرعت سرور می باشد.
    دقت کنید که اگر ویندوز سرور شما 32 بیتی است حافظه ی بیش از 4 GB را پشتیبانی نمی کند ولی اگر 64 بیتی است تا 8 ترابایت را پشتیبانی می کند. پس استفاده از ویندوز سرور 64 بیتی و Sql Server نسخه 64 بیتی برای استفاده حافظه ی بیشتر اکیدا توصیه می شود.
    اگر ویندوز شما 32 بیتی است مقدار حافظه سرور شما بیش از 4 گیگابایت است باید از این تنظیمات استفاده کنید:
    o اگر مقدار حافظه 4 GB است و سرور شما کمبود حافظه دارد از /3GB در boot.ini استفاده کنید
    o اگر مقدار حافظه بیش از 4 GB است از /PAE در boot.ini و تنظیمات AWE در Sql Server استفاده کنید
    o اگر حافظه کمتر از 4GB است لازم نیست چیزی را تغییر دهید.

هارد دیسک ) ( I/O, HDD

    هارد دیسکی با بالاترین سرعت RPM تهیه کنید (نمونه rpml 15000)
    اگر در نرم افزار Performance Monitor مقدار Disk Time Counter % :Physical Disk Object از 55%بیشتر است و Length Avg.Disk Queue بیشتر از 2 است سرور شما در سیستم I/O و سرعت هارد دیسک مشکل دارد.
    پارتیشن های NTFS سرور شما نباید بیش از 80 درصد ظرفیت اش تکمیل باشد. در غیر اینصورت مشکل سرعت در I/O ایجاد خواهد شد.
    استفاده از RAID یا SAN مناسب با محیط عملیاتی برای ذخیره سازی اطلاعات بسیار مفید و موثر است.برای حالتی که بیشتر اطلاعات خوانده می شود RAID 5 و برای حالتی که بیشتر اطلاعات نوشته می شود RAID 10 مناسب است. برای سیستم آموزش RAID 10 و در صورت نبود RAID 1 توصیه می شود.
    نوع پارتیشن های سرور حتماً باید NTFS باشند. و از Allocation Unit Size با مقدار 64 KB برای درایوهای مربوط به مسیرهای فایلهای MDF , LDF استفاده کنید.

کارت شبکه (Network Adapter)

    برای سرعت وکارایی بالاتر سرعت کارت شبکه سرور وب وپایگاه داده ایی باید 1000 MBs باشد.
    استفاده از دو کارت شبکه تک پورت معمولاً سرعت و کارایی بهتری نسبت به یک کارت شبکه دوپورت دارد.
    درایور کارت شبکه را بروز کنید و از آخرین نسخه درایور آن استفاده کنید.
    کارت شبکه باید در حالت full duplex mode اجرا شده باشند.
    اگر امکان دارد روی کارت شبکه بافر ارسال و دریافت را روی مقدار بیشینه تنظیم کنید. (receive and send buffers)
    روی کارت شبکه سرور Offload Features را فعال کنید . این تنظیم کمک می کند که CPU پردازش کمتری را انجام دهد . برای این کار در مسیر رجیستری زیر
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
    مقدار Disable TaskOffload باید صفر باشد . همه کارت شبکه ها این قابلیت را ندارند . در صورتی که با انجام این کار کندی در شبکه ایجاد شد با وارد کردن مقدار یک آنرا غیر فعال کنید. برای تاثیر این تغییر سرور باید Restart شود.

شبکه (Network)

    ساختار شبکه و تنظیمات مرتبط تاثیر مستقیمی بر سرعت و کارایی نرم افزار دارد، یک شبکه بدون سگمنت بندی صحیح و بدون وجود ساختار روتینگ مطلوب و یا مبتلا به Latency, Retransmission, Packet loss, Low Throughput افت شدیدی را در سرعت و کارایی سیستمهای نرم افزاری ایجاد می کند.
    این نرم افزارهای کاربردی و مهم شما هستند که نقش اصلی را در تعریف نیازمندی های طراحی ساختار شبکه بازی می کنند
    برای ارتقا و بهبود سرعت و کارایی شبکه مدیران شبکه بهتر است به مفاهیم Traffic shaping, "packet shaping" or ITMPs: Internet Traffic Management Practices مراجعه کنند.
    برای آگاهی از وضعیت شبکه وپهنای باند آن از نرم افزارهای مشاهده ترافیک شبکه مثل MRTG و PRTG استفاده کنید . ازاین طریق می توانید مشکلات شبکه را شناسایی کرده و منابعی که پهنای باند شبکه را بیهوده اشغال می کنند مسدود کنید.
    وجود ویروس و ورم در شبکه تاثیر زیادی در کاهش سرعت وکارایی سرورها وهمچنین اشغال کردن پهنای باند شبکه ی شما دارد.
    به جز پروتکل TCP/IP سایر پروتکل های غیر ضروری را در شبکه غیرفعال کنید.
    گلوگاههای شبکه معمولا اینها هستند: router, WAN link, server network card, switches, hubs, firewalls, CSU/DSUs(Channel Service Unit/Data Service Unit)10,
    استفاده از سوئیچ های سریعتر را در نظر داشته باشید
    افزایش تعداد کارت های شبکه با سرعت MBs 1000 سرورها موثر است
    گاهی استفاده از VLAN بار ترافیکی شبکه را اصلاح کرده و کارایی شبکه را بهبود می دهد.
    ارتقا سرعت Back bone شبکه در افزایش سرعت و میزان Throughput موثر است
    بهرحال پروتکل TCP برای برنامه های پر سرعت و پرکارایی امروزه طراحی نشده است و در این زمینه قدیمی است برای داشتن یک شبکه با کارایی بالا باید به پیاده سازی TCP بسیار دقت کنید و High performance begins with a clean IP network and an effective TCP stack.11

سیستم عامل (OS)

    بر روی سیستم عامل پروتکل های اضافی شبکه را غیر فعال کنید و فقط TCP/IP را فعال کنید. (هم در سرور و هم کلاینت ها)
    سرویس های اضافی سیستم عامل ویندوز را غیر فعال کنید. (به پیوست یک مراجعه کنید)
    برای سیستم عامل سرور وب و سرور پایگاه داده ایی حتماً ار آخرین نسخه های ویندوز سرور(Windows Server Editions) نگارش مخصوص کسب وکارهای بزرگ (Enterprise) یا (Data Center) استفاده کنید مانند(Windows Server 2003 Enterprise Edition) ویا (Windows Server 2008 R2 Enterprise Edition) همواره نسخه های جدیدتر به لحاظ سرعت ،کارایی و امنیت بهتر بوده وارتقا یافته اند.توجه داشته باشید که این نسخه ها برای مدیریت تعداد تراکنش وتعداد ارتباط وکاربر بالا طراحی شده اند و نسخه های دیگر مانند ویندوزXP وVista نسخه های رومیزی بوده و برای چنین شرایطی طراحی نشده اند و نمی توان از آنها به عنوان سروری با کارایی بالا استفاده کرد. نسخه های 64 بیتی سریعتر از 32 بیتی هستند.
    توصیه های شرکت مایکروسافت را درخصوص کارایی سیستم عامل مطالعه کنید.
    Performance Tuning Guidelines For Windows Server 2003 مقاله را از آدرس زیر دریافت کنید.
    http://download.microsoft.com/download/2/8/0/2800a518-7ac6-4aac-bd85-74d2c52e1ec6/tuning.doc
    این مقاله بسیار اطلاعات خوبی در زمینه تنظیمات سیستم عامل شما برای سرور پایگاه داده ای ، سرور وب و شبکه دارد. نسخه مربوط به ویندوز 2008 R2 را از آدرس زیر دانلود کنید:
    http://www.microsoft.com/whdc/system/sysperf/Perf_tun_srv-R2.mspx
    استفاده از ابزارهایی چونMonitor Performance که در منو Administrative Tools قراردارد و همچنین Performance advisor 2003 Microsoft® Windows Server tm می تواند به شما کمک کند که مشکلات کارایی سرور خود را تشخیص داده و اصلاح کنید این ابزار را می توانید از سایت مایکروسافت دانلود کنید.
    http://www.microsoft.com/downloads/en/details.aspx?familyid=09115420-8c9d-46b9-a9a5-9bffcd237da2&;displaylang=en

سرویس دهنده وب (IIS)

    دقت کنید که از نظر پهنای باند سرور وب شما باید سرعت ارسال (Send) بیشتری داشته باشد تا سرعت دریافت (Receive) بیشتر
    پهنای باند ارسال بیشتر به معنی سرعت و کارایی بیشتر خواهد بود.
    برای کاهش اختلال میزان دسترسی به هارد دیسک این موارد را درصورت امکان در درایوهای مجزا قرار دهید: system pagefile, operating system, Web data, ASP template cache, and IIS log
    سرویس های اضافی و برنامه غیر ضروری را نصب نکنید.
    اگر زیرساختهای سخت افزای شما با حجم بار متناسب نیست با استفاده از گزینه Connections limited to و محدود کردن تعداد ارتباطها شرایط را کنترل کنید. با این کار برای کانکشنهای اضافی خطای 503 نمایش داده می شود اما دست کم کانکشن های برقرارشده می توانند فرایند خود را کامل کنند.
    مقدار maxDiskTemplateCacheFiles را مقدار بیشینه ی 0x7FFFFFFF قرار دهید.

پایگاه داده ای (Sql Server)

    برای مدیریت پایگاه داده ای حتماً از نسخه سرورSql Server نگارش گسترده (Enterprise) استفاده کنید(Sql Server Enterprise Edition) در حال حاضر شرکت از( SQL Server 2008 Enterprise Edition)نیز پشتیبانی می کند و توصیه اکید شرکت ( به دلیل سرعت بالاتر و امنیت بالاتر) استفاده از این نگارش می باشد. دقت داشته باشید که نسخه های دیگر Sql Serverمانند Personal، Desktop Engine، Developer، Workgroup، Standard،express،...... هرگز برای شرایط کاری پرترافیک و پرتراکنش مناسب نبوده و سرعت و کارایی لازم را ندارند. نسخه های 64 بیتی سریعتر از 32 بیتی هستند.
    فایلهای MDF وLDF مربوط به پایگاه داده ای سیستم را در پارتیشن های مجزا قراردهید. همچنین TempDB (که یک دیتابیس سیستمی است) را در پارتیشنی که فایلهای MDF هستند قرارندهید.
    از NTFS Data File Encryption and Compression برای فایلهای MDF وLDF پایگاه داده ای Sql Server استفاده نکنید.
    Sql Server را روی Domain Controller نصب نکنید.
    با تمهید شرایط ویژه زیر، بهتر است ویروس کش بصورت مستقیم روی سرور پایگاه داده ایی نباشد (حداقل در زمان های پرترافیک).این کار تاثیر زیادی در بالا بردن سرعت،عملکرد و کارایی سرور پایگاه داده ایی شما دارد.اما برای جلوگیری از ویروسی شدن سرور ضروری است که حتماً شرایط زیر برقرار باشد: o سرور پایگاه داده ایی پشت فایروال بوده وپورتها بسته باشد.
    o همیشه سرویس پک های SQL Server و ویندوز سرور به روز باشد.
    o کاربر SA مربوط به SQL Server رمز قوی داشته باشد.
    o سرور وب و پایگاه داده ایی از هم جدا باشند.
    o فولدر به اشتراک گذاشته شده ایی روی سرور پایگاه داده ایی وجود نداشته باشد.
    o نرم افزارهای Mail Client روی سرور پایگاه داده ایی نصب واجرا نشده باشد.
    o روی سرور پایگاه داده ایی با اینترنت کار نشود.
    o از روی سرور پایگاه داده ایی فایل های سرورهای دیگر خوانده یا اجرا نشود.
    o از SQL Mail استفاده نشود.
    o از طریق دستگاه دیگری ویروس کشی منظم سرور پایگاه داده ایی برنامه ریزی وتنظیم شود.
    تنظیم ویروس کش برای اسکن نکردن تمامی فایل های پایگاه داده های با پسوند (mdf) و (ldf).بهر حال چه ویروس کش روی سرور پایگاه داده ایی باشد یا نباشد این تنظیم یعنی مستثنی (Exclude) کردن فایل های ldf،mdf پایگاه داده ایی تاثیر بسزایی در کارایی وسرعت سرور شما دارد.
    اگر حجم لاگ فایل (Log File) مربوط به تراکنش های سرور پایگاه داده ای که با پسوند LDF است خیلی بزرگ شده است از پایگاه داده ای کپی پشتیبان کامل بگیرید و از کارشناسان شرکت بخواهید بعد از کپی پشتیبان گرفتن از این فایل حجم آنرا کاهش دهند.
    اگر روی سرور پایگاه داده ای شما پایگاه های داده ای دیگری به جز سیستم های این شرکت قراردارد عملکرد آن سیستم ها هم در کارایی سرور سیستم های این شرکت و بخصوص سیستم آموزش و مالی تاثیر دارد. این شرکت بدلایل امنیتی و کارایی و سرعت اکیدا توصیه می کند که سرور آموزش مستقل باشد. به هر حال کارایی سایر سیستم ها نیز باید مورد بررسی قرار گیرد.
    دوباره سازی ایندکس ها را در بازه های زمانی مشخص انجام دهید(از انجام این کار در زمان های پرترافیک پرهیز کنید).این فرایند بخصوص قبل از شروع فرایندهایی نظیر انتخاب واحد و ثبت نمره استادان توسط کارشناسان پشتیبانی بویژه برای دانشگاههایی که تعداد دانشجوی بالای 3000 نفر است باید انجام شود.
    بهینه سازی فایل ها را در هنگام پرترافیک انجام ندهید(shrink) .
    تهیه کپی پشتیبان کامل (Full Database Backup) را در زمانهای کم ترافیک انجام دهید. و در بازه های یک ساعته از Transaction Log کپی پشتیبان بگیرید یا سیستم را تنظیم کنید که بطور اتوماتیک این کار را انجام دهد.
    اگر برای نگهداری Sql Server از Job های اتوماتیک استفاده می کنید مطمئن شوید که این Jobها همزمان با هم اجرا نشوند.

منابع و مراجع:
1- Sql Server DBA Best Peractice ، by Brad M. McGehee
2- Sql Server 2000 High Availability، Microsoft Press
3- http://www. Sql –Server-Performance.com
4- Pro Sql Server 2005 High Availability، Allan Hirt ، Apess
5- Troubleshooting Performance Problems in SQL Server 2005، Microsoft
6- Performance Tuning Guidelines for Windows Server 2003
7- Performance Tuning Guidelines for Windows Server 2008 R2
8- Best Practices in IP Network Design , TechTarget
9- Understanding Bottlenecks and Bandwidth Management , TechTarget
10- Channel Service Unit/Data Service Unit: is a hardware device about the size of an external modem that converts a digital data frame from the communications technology used on a local area network (LAN) into a frame appropriate to a wide-area network (WAN) and vice versa.
11- Not your daddy's TCP By Loki Jorgenson , TechTarget
12- Professional SQL Server 2005 Performance Tuning, Steven Wort ,Wrox
13- Troubleshooting Performance Problems in SQL Server 2005, Microsoft