Khởi động lại máy chủ trong một lịch trình sẽ là ý tưởng tốt cho hiệu suất?


14

Tôi tự hỏi nếu khởi động lại một máy chủ trong một lịch trình sẽ là ý tưởng tốt cho hiệu suất.

Giả sử chúng tôi muốn khởi động lại máy chủ lúc 02:00 AM mỗi 2 đêm.

Máy chủ ở đây là Windows Server 2008 R2. Chủ yếu, SQL Server và IIS 7.5 (gần 15 ứng dụng đang chạy) đang chạy dưới máy chủ này. Máy chủ có bộ nhớ 4GB.


9
Bạn đang thực sự có vấn đề về hiệu suất? Windows có thể hoạt động trong nhiều năm mà không được khởi động lại. Sẽ không mất nhiều thời gian mà không cần khởi động lại, đơn giản vì các bản vá cần được cài đặt, nhưng chắc chắn là có thể. Cá nhân tôi có một máy chủ trong một mạng hoàn toàn bị cô lập, đã hoạt động được <séc> 489 ngày. Nó vẫn hoạt động tốt và hiệu suất là chấp nhận được.
Ben Pilbrow

6
Tôi giả sử rằng nó làm điều đó khi có bộ nhớ hoặc CPU hạn chế. - bạn giả định sai.
Rob Moir

4
Người bỏ phiếu xuống cho bài đăng này nên giải thích lý do tại sao. Đó là câu hỏi được giải thích tốt và không có gì sai với điều này.
tugberk

17
Điều chính xác cần làm là khắc phục sự cố tại sao bạn gặp sự cố, không chỉ khởi động lại nó. Máy tính được khởi động lại thường xuyên được gọi là máy tính để bàn.
Bart Silverstrim

4
Họ có thể downvote vì một số câu hỏi là một ý tưởng tồi; một ví dụ không xuất hiện trong tâm trí lúc này Có rất nhiều lý do. Mọi người thật lạ. Chúng tôi dựa vào ý thức chung để vượt qua những đánh giá nghèo nàn và tồi tệ. Đó là lý do tại sao đó là một trang web Q / A cộng đồng.
Bart Silverstrim

Câu trả lời:


32

Mặc dù tôi đồng ý rằng không có gì sai khi khởi động lại hộp, nhưng dựa trên nhận xét của bạn rằng Tác nhân Máy chủ SQL đang dừng, tôi sẽ tư vấn một số phân tích nguyên nhân gốc bổ sung. Các dịch vụ thường không dừng lại và các dịch vụ SQL Server Agent thường không hoạt động theo kinh nghiệm của tôi.

Tôi nghĩ rằng bạn sẽ làm tốt, ngoài việc khởi động lại, để kiểm tra nhật ký sự kiện và chạy nhật ký truy cập hiệu suất dài hạn mà bạn có thể phân tích với Phân tích hiệu suất của nhật ký (PAL) để xem liệu nó có "thấy" gì không. Bạn nên thử, nếu không có gì khác, để tương quan các sự kiện liên quan đến việc dừng Tác nhân SQL với các yếu tố khác.


2
"Thêm" ? Lỗi phân tích cú pháp tại dòng 2.
Tomas

@tugberk - nếu đây là câu trả lời, nguyên nhân của Tác nhân SQL dừng lại sau khi anaylsis của bạn được đề xuất bởi Evan là gì?
tháng 8

@fluffy: Này đó! Thật tuyệt khi thấy bạn ở đây! Tôi không biết rằng bạn đã từng biết "tên thật" của tôi. Tôi là người quen cũ của Song Fight từ khung thời gian 2003 - 2005. Nghĩ rằng synth-pop crappy và một tên "ban nhạc" gợi lên tầm nhìn về bãi rác và bạn có thể nhớ lại.
Evan Anderson

Chà điều đó thật tuyệt vời! Xin chào. ;) (Tất nhiên điều này nên được gửi đến email nhưng tôi không thể tìm thấy địa chỉ của bạn.)
fluffy

38

Nếu bạn đang tìm cách khởi động lại máy tính để cải thiện hiệu suất thì có lẽ điều đó có nghĩa là cuối cùng bạn cũng gặp vấn đề về quản lý bộ nhớ.

Bộ nhớ đệm là tốt

Nếu bất cứ điều gì, máy chủ khởi động lại sẽ ảnh hưởng đến hiệu suất (và tất nhiên thời gian hoạt động) trong một môi trường lý tưởng hơn . Một trong những nguyên tắc cơ bản của hiệu năng trong điện toán là tận dụng bộ nhớ đệm (có sẵn dữ liệu trong bộ nhớ nhanh). Mỗi lần bạn khởi động lại, bạn sẽ xóa bộ nhớ cache của mình. Điều này đúng với cả máy chủ SQL và IIS. Mặc dù bạn có thể không có môi trường lý tưởng, nhưng những điều sau đây sẽ giúp hướng dẫn bạn một lựa chọn tốt hơn là khởi động lại máy chủ theo lịch trình.

Bộ nhớ IIS bị rò rỉ?

Bây giờ bạn đã đề cập rằng đây là IIS 7.5. Mặc dù tôi thấy nó rất buồn, nhưng rất nhiều ứng dụng web chạy trên IIS 7.5 bị rò rỉ bộ nhớ mà mặc định trong IIS là khởi động lại APP mỗi X phút và tắt nó nếu nhóm APP không hoạt động. Lý tưởng là khắc phục rò rỉ bộ nhớ - nhưng nếu bạn không thể điều chỉnh các cài đặt này bao gồm giới hạn bộ nhớ và bộ hẹn giờ. Bạn có thể sử dụng perfmon để tìm ra quá trình w3wp đang sử dụng bộ nhớ. Đó là một chút đau đớn nhưng bạn có thể buộc nó trở lại nhóm ứng dụng với %systemroot%\system32\inetsrv\APPCMD list wps.

Bộ nhớ SQL

Quay trở lại bộ nhớ đệm, SQL sẽ lấy những gì bộ nhớ có thể. Bạn có thể giới hạn điều này trong các thuộc tính cho máy chủ SQL. Nếu bạn không giới hạn bộ nhớ và bạn cũng đang chạy IIS trên hộp, những thứ này có thể bắt đầu chiến đấu cho hiệu năng tiêu diệt bộ nhớ. Bài viết xuất sắc này đi sâu vào chi tiết này: Hướng dẫn về bộ nhớ Microsoft SQL của Sysadmin .

Thăng bằng

Vì bạn có cả IIS và SQL trên cùng một hộp, bạn sẽ phải cân bằng việc sử dụng bộ nhớ của chúng. Nếu bạn không, bạn có thể nhận được bộ nhớ có khả năng được sử dụng lại được trao đổi vào đĩa - đó là một nơi tồi tệ (Nên có quầy nước hoa cho hoạt động trao đổi). Bằng cách sử dụng cài đặt Tái chế IIS và giới hạn Bộ nhớ SQL, bạn sẽ có thể làm cho hệ thống này ổn định. Để cân bằng điều này, bạn có thể cần nhiều bộ nhớ hơn 4GB. Ngoài ra, nếu đó là một tùy chọn, tôi thực sự khuyên bạn nên đặt máy chủ SQL trên một máy chuyên dụng - nó sẽ giúp hiệu suất tốt hơn nhiều và đơn giản hóa mọi thứ rất nhiều.


Kyle trả lời tuyệt vời, ước gì tôi có một trong những tháng trước về các câu hỏi liên quan đến hiệu suất SBS2011 của tôi! Đã đánh vào từng điều bạn đề cập thông qua nghiên cứu (nhiều tháng) của riêng tôi. Vẫn còn vấn đề nhưng đó là một vấn đề khác.
HaydnWVN

12

Tôi không phải là người đề xuất khởi động lại máy chủ theo lịch, đặc biệt không phải là phương tiện để giải quyết một số vấn đề tiềm ẩn. Nếu bạn cần khởi động lại máy chủ này để giải quyết vấn đề về hiệu năng thì quá trình hành động tốt hơn là tìm ra nguyên nhân của vấn đề và giải quyết nó. Khởi động lại máy chủ theo lịch trình thường xuyên chỉ làm xáo trộn vấn đề tiềm ẩn.


5

Nếu bạn đã bị rò rỉ bộ nhớ đáng kể thì chắc chắn, tại sao không - nếu không thì khởi động lại hàng tháng bằng các bản cập nhật.


cảm ơn vì tiền hỗ trợ. Bây giờ tôi đang xem trình quản lý tác vụ và thấy hệ thống đó sử dụng 75% bộ nhớ.
tugberk

6
Nếu nó đang chạy SQL Server, điều đó sẽ được mong đợi. SQL Server sẽ cố gắng (và bạn nên để nó) sử dụng tất cả bộ nhớ có thể.
Ben Pilbrow

4
điều đó không có nghĩa là bạn bị rò rỉ bộ nhớ. Bộ nhớ là có để được sử dụng. Và khởi động lại để chữa rò rỉ bộ nhớ là một cách giải quyết hoàn toàn thực dụng nhưng một giải pháp tốt hơn trong dài hạn là tìm và sửa lỗi gây ra chúng.
Rob Moir

1
@tugberk: Như tôi đã nói trong câu trả lời của mình, đó không phải là kinh nghiệm của tôi khi dịch vụ SQL Server Agent dừng lại do điều kiện áp suất bộ nhớ. Có lẽ có những điều kiện theo đó, nhưng tôi hy vọng bạn sẽ gặp vấn đề với các dịch vụ khác vào thời điểm đó (vì có lẽ nó sẽ khá nghiêm trọng).
Evan Anderson

2
Nếu đó là ký ức, bạn sẽ thấy việc hoán đổi bị ảnh hưởng nặng nề trước khi nó "chết", tôi nghĩ vậy. Bộ nhớ sẽ luôn được sử dụng nhiều nhất có thể cho bộ nhớ đệm và như vậy. Bạn có lẽ nên sử dụng các công cụ để phân tích việc sử dụng cơ sở dữ liệu của bạn trước tiên. Và nếu bạn đang chạy 15 ứng dụng và có bộ nhớ chặt chẽ (15 ứng dụng + cơ sở dữ liệu trong 4 gig? Những thứ này lớn đến mức nào?) Có lẽ bạn đã nên xem xét việc phá vỡ thành phần cơ sở dữ liệu khỏi máy chủ web sang máy chủ chuyên dụng.
Bart Silverstrim

2

Nếu bạn thực sự muốn khởi động lại máy chủ theo lịch trình (vì các rò rỉ hoặc cập nhật bộ nhớ nêu trên hoặc bất kỳ lý do nào khác) - tại sao không xem xét một giải pháp cụm? Đặt song song một máy chủ khác, nối chúng với bộ cân bằng tải (thậm chí là đơn giản sẽ làm) và bạn có thể khởi động lại chúng nhiều như bạn muốn mà không mất thời gian phục vụ hoặc lo lắng rằng máy chủ sẽ không khởi động được và bạn sẽ ra ngoài


1

Đó không phải là một ý tưởng khủng khiếp , nhưng nếu nó chỉ là 'voodoo', có lẽ nó sẽ không giúp bạn nhiều.

Tuy nhiên, có hai lý do không để điều này kết thúc cuộc điều tra của bạn về việc cải thiện hiệu suất của bạn.

Một là khả năng mở rộng trong tương lai. Nếu sự cố ngừng hoạt động của bạn là kết quả của tải, một số truy vấn nhất định, một truy vấn cụ thể gặp lỗi lưu trữ, biên dịch truy vấn hoặc lỗi lập chỉ mục btree hoặc các vấn đề khác hiện đang tái diễn hàng ngày, chúng có thể sẽ xảy ra thường xuyên hơn khi tải tăng theo thời gian. Níp mà trong chồi.

Vấn đề khác là tôi nghi ngờ bạn sẽ cần phải dừng các yêu cầu đến từ các dịch vụ phụ thuộc trong quá trình khởi động lại. Bạn vừa tạo ra một nhịp hoạt động. Mỗi khi một số nhiệm vụ hàng ngày cần được chạy, nó sẽ kết thúc với khởi động lại của bạn. Tại một số điểm, bạn sẽ có những lần khởi động lớn này mất sáu giờ (tôi không phóng đại ở đây, tôi đã thấy nó xảy ra tại nhiều công ty) và không ai sẽ nhớ tại sao mọi thứ cần phải dừng lại và khởi động lại ở giữa của đêm

Đề nghị của tôi sẽ là theo dõi quá trình SQL và khởi động lại khi cần thiết. Như được đề cập bởi một poster trước đó, SQL không bị rò rỉ bộ nhớ mà mọi người nghĩ là như vậy (và tôi nói điều này với tư cách là một người trong nhóm MSSQL vào giữa những năm 90). Bạn muốn máy chủ cơ sở dữ liệu của bạn sử dụng gần như 100% bộ nhớ và CPU. Bất cứ điều gì ít hơn là lãng phí tài nguyên.


0

Nếu bạn bị rò rỉ mã và bộ nhớ kém thì việc khởi động lại có thể là cách duy nhất để đưa bộ nhớ được phân bổ trở lại nhóm. Nếu bạn có các tiến trình bị ràng buộc về bộ nhớ thì việc làm mới hồ bơi này sang trạng thái sạch chắc chắn có thể cải thiện hiệu suất .... trong một thời gian. Nhưng đây thực sự là một cách tồi để xử lý các vấn đề về hiệu suất, nguyên nhân thực sự cần được đóng đinh và khắc phục.

Nếu không, hãy để nó chạy cho đến khi bạn cần một cửa sổ bảo trì để áp dụng các bản vá / ứng dụng / khôi phục dữ liệu. Đây có thể là thời điểm tốt để đề xuất một kỹ sư hiệu suất xem xét các máy chủ được đề cập để biết chính xác lý do tại sao / vấn đề gì đang hấp dẫn điều này.


0

Mặc dù không phải là một câu trả lời hoàn chỉnh cho mỗi se , nhưng nó có phải là một lựa chọn khả thi để thêm một số RAM cho máy chủ không? 4GB là một phần nhỏ cho máy IIS / SQL Server. Tùy thuộc vào việc nó là một đơn vị máy chủ chuyên dụng thực tế hay máy tính để bàn được đưa vào dịch vụ, bạn có thể có được 8GB hoặc nhiều hơn với chi phí khá thấp. Cấp, nếu nó là một máy chủ, nó có thể tốn hơn một chút so với RAM máy tính để bàn tiêu chuẩn nhưng nó sẽ cho bạn thêm một chút thời gian giữa các lần khởi động lại bắt buộc.

Nói rằng, hãy xem liệu bạn có thể giới hạn SQL Server sử dụng tối đa 80% RAM hay không, hoặc xem nhật ký để tìm ra chính xác những gì đang xảy ra và / hoặc tại sao dịch vụ dừng lại.


0

Không liên quan đến vấn đề SQL mà bạn có thể xử lý nếu bạn có máy chủ Windows và đang theo bất kỳ loại thói quen vá nào, bạn sẽ khởi động lại máy chủ một cách thường xuyên mà không phải khởi động lại "chỉ vì". Khi tôi làm việc cho "ĐA NĂNG LỚN", chúng tôi được yêu cầu vá hàng tháng và như vậy tất cả các máy chủ của chúng tôi đã được khởi động lại hàng tháng ít nhất một lần.


0

Tôi đang làm điều này trên 3 máy chủ, 1 là khách hàng của chúng tôi và 2 khách hàng. Tôi đã giải quyết nó vì nhiều lý do - một máy chủ 2008R1 có nhiều bản cập nhật đang chờ xử lý để cài đặt, nhưng tôi không thể cài đặt hàng loạt chúng, vì vậy tôi cài đặt từng cái một mỗi ngày; một máy chủ khác 2012R2 - để khắc phục sự cố khởi động và một số vấn đề về hiệu suất, v.v. Tôi không nghĩ rằng đó là một thực tế tồi để lên lịch khởi động lại định kỳ, từ khó khăn khác Nó có thể giúp theo dõi các vấn đề phần cứng và phần mềm khác nhau, đặc biệt là những vấn đề liên quan đến tự động khởi động .


-2

Tôi biết một công ty lớn không chỉ khởi động lại máy chủ Windows của họ hàng đêm, mà một số trong số họ thậm chí còn được cài đặt lại sau mỗi 24 giờ. Đối với họ, nó cần thiết vì bộ nhớ phát triển trong các vấn đề phần mềm và bảo mật.

Có vẻ như một số công ty đang khởi động lại mỗi 24 giờ - mặc dù nó có vẻ lạ đối với tôi với tư cách là quản trị viên linux. Để làm rõ: tôi sẽ không bao giờ khuyên bạn nên làm điều này vì vấn đề bộ nhớ - theo dõi vấn đề và giải quyết nó.

Nếu mức sử dụng bộ nhớ của bạn cố định ở mức 75% trong nhiều tháng, thì có thể không cần phải khởi động lại - việc ứng dụng máy chủ sử dụng tất cả bộ nhớ có sẵn là rất bình thường - nó giúp tăng hiệu suất rất nhiều vì bạn cần ít IO hơn nếu bạn sử dụng RAM để lưu trữ dữ liệu của bạn.


cảm ơn @Subito. Vâng, tôi thực sự là một nhà phát triển web (không phải quản trị viên máy chủ) nhưng hiện tại tôi cần duy trì một máy chủ. Đó là lý do tại sao tôi hỏi câu hỏi đơn giản này. Tôi nghĩ bạn đúng. Nhưng tôi bị sốc khi có những công ty làm những việc đó. Họ không có lợi cho bất kỳ loại tiền mặt phía máy chủ?
tugberk

Tất cả các ứng dụng của chúng đều tự viết và dự định sử dụng với DOS hoặc 3.11. Họ đã quản lý để có được một cơ sở dữ liệu ngoài các ứng dụng này và bằng cách nào đó đã chuyển chúng sang Server 2008. Thật kỳ diệu là nó vẫn hoạt động. Không ai có hạt và cố gắng thay đổi mọi thứ để sử dụng bộ đệm. Họ có một vài người đang ngồi đó và chờ đợi một cái gì đó sụp đổ và sau đó khởi động lại ứng dụng / máy chủ / bất cứ điều gì.
Subito

6
Không có "hợp pháp" để khởi động lại máy chủ cứ sau 24 giờ. Hoặc là họ đã gặp phải một số vấn đề rất nghiêm trọng hoặc mạng và máy chủ của họ đang được quản lý bởi những kẻ ngốc lớn nhất trong nghề.
Rob Moir

vâng, họ thực sự là những kẻ ngốc lớn nhất - nhưng đó không phải là công ty duy nhất tôi biết, đang làm điều này với các máy chủ windows của họ ... Nó dường như là một cách xử lý vấn đề bộ nhớ khá phổ biến. - Đừng hiểu lầm tôi, tôi nghĩ đó là một sai lầm khủng khiếp, khủng khiếp, để không điều tra và giải quyết các vấn đề!
Subito

7
@Subito - Trong câu trả lời của bạn, bạn nói "Có vẻ hợp pháp để khởi động lại sau mỗi 24 giờ" Đó chỉ là lời khuyên tồi. Bạn đang nói với OP rằng đó là một ý tưởng hợp pháp trong khi giới thiệu một công ty mà bạn nói là đầy những kẻ ngốc với phần mềm khủng khiếp. Có vẻ không hợp pháp với tôi.
MDMarra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.