Apakah me-reboot server dalam jadwal merupakan ide bagus untuk kinerja?

14

Saya bertanya-tanya apakah me-reboot server dalam jadwal akan menjadi ide bagus untuk kinerja.

Katakanlah kita ingin me-reboot server pada jam 02:00 per 2 malam.

Server di sini adalah Windows Server 2008 R2. Terutama, SQL Server dan IIS 7.5 (hampir 15 aplikasi berjalan) berjalan di bawah server ini. Server memiliki memori 4GB.

tugberk
sumber
9
Apakah Anda benar-benar mengalami masalah kinerja? Windows bisa berjalan selama bertahun-tahun tanpa harus reboot. Ini tidak harus pergi yang lama tanpa reboot, hanya karena patch perlu diinstal, tapi itu pasti mungkin. Saya pribadi memiliki server di jaringan yang benar-benar terisolasi yang telah beroperasi selama <check> 489 hari. Ini masih berfungsi dengan baik dan kinerja dapat diterima.
Ben Pilbrow
6
Saya berasumsi bahwa ia melakukan itu ketika ada jumlah memori atau CPU yang terbatas. - Anda menganggap salah.
Rob Moir
4
Orang yang memberikan suara untuk posting ini harus menjelaskan alasannya. Ini adalah pertanyaan yang dijelaskan dengan baik dan tidak ada yang salah dengan ini.
tugberk
17
Hal yang benar untuk dilakukan adalah memecahkan masalah mengapa Anda mengalami masalah, bukan hanya memulai kembali. Komputer yang secara rutin dinyalakan ulang disebut desktop.
Bart Silverstrim
4
Mereka mungkin mengundurkan diri karena beberapa pertanyaan juga merupakan ide yang buruk; sebuah contoh tidak muncul dalam pikiran saat ini. Ada banyak alasan. Orang-orang aneh. Kami mengandalkan akal sehat umum untuk mengatasi penilaian yang buruk dan buruk. Itu sebabnya situs Q / A komunitas.
Bart Silverstrim

Jawaban:

32

Sementara saya akan setuju bahwa tidak ada yang salah dengan me-reboot kotak, per se, berdasarkan komentar Anda bahwa SQL Server Agent berhenti, saya akan menyarankan beberapa analisis penyebab root tambahan. Layanan biasanya tidak berhenti begitu saja, dan layanan SQL Server Agent tidak bertindak seperti itu dalam pengalaman saya, biasanya.

Saya pikir Anda akan melakukannya dengan baik, selain dari me-reboot, untuk memeriksa log peristiwa dan menjalankan penghitung log kinerja jangka panjang yang dapat Anda analisis dengan Analisis Kinerja Log (PAL) untuk melihat apakah "melihat" ada yang salah. Anda harus mencoba, jika tidak ada yang lain, untuk mengkorelasikan peristiwa yang terkait dengan Agen SQL yang berhenti dengan faktor lain.

Evan Anderson
sumber
2
"addt'l" ? Kesalahan parsing di baris 2.
Tomas
@tugberk - jika ini jawabannya, apa penyebab Agen SQL berhenti setelah anaylsis Anda disarankan oleh Evan?
Agustus
@Fluffy: Hai, di sana! Senang melihatmu di sini! Saya tidak tahu bahwa Anda pernah tahu "nama asli" saya. Saya kenalan Song Fight lama dari kurun waktu 2003 - 2005. Pikirkan synth-pop jelek dan nama "band" yang membangkitkan visi tempat pembuangan sampah dan Anda mungkin ingat.
Evan Anderson
Yah itu cukup offtopic! Hai Adjuster. ;) (Ini tentu saja harus dibawa ke email tetapi saya tidak dapat menemukan alamat Anda.)
fluffy
38

Jika Anda ingin me-reboot komputer untuk meningkatkan kinerja, itu mungkin berarti bahwa pada akhirnya Anda mengalami masalah manajemen memori.

Caching itu Bagus

Jika ada, me-reboot server akan merusak kinerja (dan uptime tentu saja) di lingkungan yang lebih ideal . Salah satu dasar kinerja dalam komputasi adalah untuk mengambil keuntungan dari caching (memiliki data yang tersedia dalam memori cepat). Setiap kali Anda reboot, Anda menerbangkan cache Anda. Ini berlaku untuk SQL server dan IIS. Meskipun Anda mungkin tidak memiliki lingkungan yang ideal, yang berikut ini akan membantu memandu Anda ke opsi yang lebih baik daripada me-reboot server sesuai jadwal.

Kebocoran Memori IIS?

Sekarang Anda menyebutkan bahwa ini adalah IIS 7.5. Meskipun saya merasa tertekan, banyak aplikasi web yang berjalan di IIS 7.5 memiliki kebocoran memori sehingga default di IIS adalah untuk me-restart aplikasi setiap X menit dan mematikannya jika kolam APP idle. Yang ideal adalah memperbaiki kebocoran memori - tetapi jika Anda tidak bisa, Anda dapat menyesuaikan pengaturan ini yang mencakup batas memori dan timer. Anda dapat menggunakan perfmon untuk mengetahui proses w3wp mana yang menggunakan memori. Ini agak menyebalkan tetapi Anda dapat mengikatnya kembali dengan kolam aplikasi %systemroot%\system32\inetsrv\APPCMD list wps.

Memori SQL

Kembali ke caching, SQL akan mengambil memori apa yang bisa. Anda dapat membatasi ini di properti untuk SQL server. Jika Anda tidak membatasi memori dan Anda juga menjalankan IIS pada kotak, ini dapat mulai memperjuangkan kinerja membunuh memori. Artikel yang luar biasa ini membahas secara rinci: Panduan Sysadmin untuk Microsoft SQL Memory .

Keseimbangan

Karena Anda memiliki IIS dan SQL di kotak yang sama, Anda harus menyeimbangkan penggunaan memori mereka. Jika tidak, Anda mungkin mendapatkan memori yang kemungkinan akan digunakan kembali bertukar ke disk - yang merupakan tempat yang mengerikan (Harus ada penghitung perfmon untuk aktivitas swap). Dengan menggunakan pengaturan IIS Recycle dan batas Memori SQL, Anda harus dapat membuat sistem ini stabil. Untuk menyeimbangkan ini, Anda mungkin membutuhkan lebih banyak memori dari 4GB. Juga, jika ini merupakan opsi, saya akan sangat menyarankan menempatkan SQL server pada mesin khusus - itu akan membuat kinerja lebih baik dan sangat menyederhanakan hal-hal.

Kyle Brandt
sumber
Jawaban yang luar biasa Kyle, berharap saya memiliki salah satu dari bulan ini pada pertanyaan terkait kinerja SBS2011 saya! Telah menemukan setiap hal yang Anda sebutkan melalui riset saya sendiri (berbulan-bulan). Masih memukul masalah tapi itu masalah lain.
HaydnWVN
12

Saya bukan pendukung me-reboot server sesuai jadwal, terutama bukan sebagai cara menyelesaikan beberapa masalah mendasar. Jika Anda perlu me-reboot server ini untuk menyelesaikan masalah kinerja, maka tindakan yang lebih baik adalah menemukan penyebab masalah dan menyelesaikannya. Mem-boot ulang server pada jadwal reguler hanya mengaburkan masalah mendasar.

joeqwerty
sumber
5

Jika Anda mengalami kebocoran memori yang signifikan maka pasti, mengapa tidak - jika tidak, reboot setiap bulan dengan pembaruan.

Chopper3
sumber
terima kasih atas tipnya. Saya melihat task manager sekarang dan melihat sistem yang menggunakan 75% dari memori.
tugberk
6
Jika menjalankan SQL Server, itu yang diharapkan. SQL Server akan mencoba (dan Anda harus membiarkannya) menggunakan semua memori yang ada.
Ben Pilbrow
4
itu tidak berarti Anda memiliki kebocoran memori. Memori ada untuk digunakan. Dan me-reboot untuk menyembuhkan kebocoran memori adalah solusi pragmatis yang sempurna tetapi solusi yang lebih baik dalam jangka panjang adalah menemukan dan memperbaiki kesalahan yang menyebabkannya.
Rob Moir
1
@tugberk: Seperti yang saya nyatakan dalam jawaban saya, belum pengalaman saya bahwa layanan SQL Server Agent berhenti karena kondisi tekanan memori. Agaknya ada kondisi di mana itu akan terjadi, tapi saya berharap Anda akan melihat masalah dengan layanan lain pada saat Anda sampai pada titik itu (karena mungkin akan cukup parah).
Evan Anderson
2
Jika itu adalah memori Anda harus melihat swap dipukul sebelum itu hanya "mati," saya pikir. Memori akan selalu digunakan sebanyak mungkin untuk caching dan semacamnya. Anda mungkin harus menggunakan alat untuk menganalisis penggunaan basis data Anda terlebih dahulu. Dan jika Anda menjalankan 15 aplikasi, dan kehabisan memori (15 aplikasi + database dalam 4 pertunjukan? Seberapa besar hal-hal ini?) Anda mungkin sudah harus melihat memecah komponen database dari server web ke server khusus.
Bart Silverstrim
2

Jika Anda benar-benar ingin me-reboot server sesuai jadwal (karena kebocoran memori atau pembaruan yang disebutkan di atas atau alasan lain) - mengapa tidak melihat solusi cluster? Pasang server lain secara paralel, kaitkan mereka ke penyeimbang beban (bahkan yang sederhana akan melakukannya) dan Anda dapat mem-boot ulang sebanyak yang Anda inginkan tanpa kehilangan layanan up-time atau khawatir bahwa server tidak akan boot sama sekali dan kamu akan keluar.

V. Romanov
sumber
1

Itu bukan ide yang mengerikan , tetapi jika itu hanya 'voodoo', itu mungkin tidak akan banyak membantu Anda.

Namun, ada dua alasan untuk tidak membiarkan ini menjadi akhir dari penyelidikan Anda untuk meningkatkan kinerja Anda.

Salah satunya adalah skalabilitas masa depan. Jika pemadaman Anda adalah hasil pemuatan, sejumlah kueri tertentu, kueri tertentu yang mengenai caching, kompilasi kueri, atau bug pengindeksan btree, atau masalah lain yang saat ini berulang setiap hari, mereka mungkin akan lebih sering terjadi saat memuat meningkat seiring waktu. Gigit itu sejak awal.

Masalah lainnya adalah saya menduga Anda harus menghentikan permintaan masuk dari layanan dependen selama restart. Anda baru saja membuat irama operasional. Setiap kali beberapa tugas sehari-hari perlu dijalankan, tugas itu akan dikaitkan dengan restart Anda. Pada titik tertentu, Anda akan memiliki restart bergulir besar yang memakan waktu enam jam (saya tidak melebih-lebihkan di sini, saya telah melihat itu terjadi di lebih dari satu perusahaan) dan tidak ada yang akan ingat mengapa semuanya harus dihentikan dan dimulai kembali di tengah malam ini.

Rekomendasi saya adalah untuk memantau proses SQL dan restart sesuai kebutuhan. Seperti yang disebutkan oleh poster sebelumnya, SQL tidak memiliki kebocoran memori yang orang pikirkan (dan saya katakan ini sebagai orang yang ada di tim MSSQL pada pertengahan 90-an). Anda ingin server database Anda menggunakan hampir 100% memori dan CPU. Yang kurang dari itu adalah pemborosan sumber daya.

Seni Taylor
sumber
0

Jika Anda mengalami kebocoran kode dan memori yang ditulis dengan buruk maka reboot mungkin merupakan satu-satunya cara untuk mengembalikan memori yang dialokasikan kembali ke kumpulan. Jika Anda memiliki proses yang terikat memori maka penyegaran kolam ini ke keadaan bersih pasti dapat meningkatkan kinerja .... untuk sementara waktu. Tapi ini benar-benar cara yang buruk untuk menangani masalah kinerja, penyebab sebenarnya harus dipecahkan dan diperbaiki.

Kalau tidak, biarkan berjalan sampai Anda membutuhkan jendela pemeliharaan untuk menerapkan tambalan / aplikasi / mengembalikan data. Ini mungkin saat yang tepat untuk menyarankan seorang insinyur kinerja untuk melihat server yang bersangkutan untuk alasan persisnya / masalah apa yang mendorong ini.

James Pulley
sumber
0

Meskipun tidak jawaban yang lengkap per se , tetapi apakah itu pilihan yang layak untuk menambahkan beberapa RAM ke server? 4GB sedikit lebih rendah untuk mesin IIS / SQL Server. Tergantung apakah itu adalah unit server khusus sebenarnya atau desktop yang ditekan ke dalam layanan, Anda mungkin bisa mendapatkannya 8GB atau lebih dengan biaya yang cukup rendah. Memang, jika itu adalah server mungkin harganya sedikit lebih dari RAM desktop standar tetapi itu akan memberi Anda sedikit lebih banyak waktu antara reboot paksa.

Mengatakan itu, lihat apakah Anda dapat membatasi SQL Server untuk menggunakan maksimum 80% dari RAM, atau melihat log untuk memperbaiki apa yang salah dan / atau mengapa layanan berhenti.

tombull89
sumber
0

Tidak terkait dengan masalah SQL yang mungkin Anda hadapi jika Anda memiliki server Windows dan mengikuti segala rutinitas penambalan, Anda akan me-reboot server secara teratur tanpa harus me-reboot "hanya karena". Ketika saya bekerja untuk "BIG MULTINATIONAL" kami diberi mandat untuk menambal bulanan dan karena itu semua server kami di-reboot setiap bulan setidaknya sekali.

Mitch
sumber
0

Saya melakukan ini pada 3 server, 1 adalah pelanggan kami dan 2. Saya telah menyelesaikannya karena berbagai alasan - satu server 2008R1 memiliki banyak pembaruan yang tertunda untuk diinstal, tetapi saya tidak dapat menginstalnya secara batch, jadi saya menginstalnya satu per satu setiap hari; server lain 2012R2 - untuk pemecahan masalah boot dan beberapa masalah kinerja, dll. Saya pikir itu bukan praktik yang buruk untuk menjadwalkan reboot berkala, dari hard lainnya. Dapat membantu melacak berbagai masalah perangkat keras dan perangkat lunak, terutama yang terlibat dalam start otomatis .

integratorIT
sumber
-2

Saya tahu perusahaan besar yang tidak hanya me-reboot server Windows mereka setiap malam, tetapi beberapa dari mereka bahkan diinstal ulang setiap 24 jam. Bagi mereka, itu perlu karena leeks memori dalam masalah perangkat lunak dan keamanan.

Tampaknya beberapa perusahaan me-reboot setiap 24 jam - meskipun tampaknya aneh bagi saya sebagai administrator linux. Untuk memperjelas: Saya tidak akan merekomendasikan untuk melakukan ini karena masalah memori - melacak masalah dan menyelesaikannya.

Jika penggunaan memori Anda tetap pada 75% selama berbulan-bulan, maka mungkin tidak perlu melakukan reboot - itu benar-benar normal untuk aplikasi server untuk menggunakan semua memori yang tersedia - itu meningkatkan kinerja banyak karena Anda membutuhkan lebih sedikit disk-IO's jika Anda menggunakan RAM untuk menyimpan data Anda.

Subito
sumber
terima kasih @Subito. Yah, saya sebenarnya web dev (bukan admin server) tetapi saat ini saya perlu memelihara server. Itu sebabnya saya mengajukan pertanyaan sederhana ini. Saya pikir kamu benar. Tetapi saya terkejut bahwa ada perusahaan yang melakukan hal semacam itu. Apakah mereka tidak mendapat manfaat dari menguangkan sisi server?
tugberk
Semua aplikasi mereka ditulis sendiri dan dimaksudkan untuk digunakan dengan DOS atau 3.11. Mereka berhasil mendapatkan database di luar aplikasi ini dan entah bagaimana mengirimnya ke Server 2008. Ini keajaiban bahwa ini masih berfungsi. Tidak ada yang akan memiliki kacang dan mencoba mengubah segalanya untuk menggunakan cache. Mereka memiliki beberapa orang yang duduk di sana dan menunggu sesuatu crash dan kemudian restart aplikasi / server / apa pun.
Subito
6
Tidak itu tidak "sah" untuk me-reboot server setiap 24 jam. Entah mereka punya masalah kasus tepi yang sangat ekstrim atau jaringan dan server mereka dikelola oleh para idiot terbesar dalam profesi ini.
Rob Moir
ya, mereka memang idiot terbesar - tetapi itu bukan satu-satunya perusahaan yang saya tahu, yang melakukan ini dengan server windows mereka ... Tampaknya menjadi cara yang cukup umum untuk menangani masalah memori. - Jangan salah paham, saya pikir ini kesalahan yang sangat mengerikan, untuk tidak menyelidiki dan menyelesaikan masalah!
Subito
7
@ Subito - Dalam jawaban Anda, Anda mengatakan "Tampaknya sah untuk reboot setiap 24 jam" Itu saran yang sangat buruk. Anda memberi tahu OP bahwa itu adalah ide yang sah saat merujuk perusahaan yang Anda katakan penuh dengan orang bodoh dengan perangkat lunak yang mengerikan. Sepertinya tidak sah bagi saya.
MDMarra