Tối ưu hệ thống máy chủ Cloud Server

Thông thường, trên máy chủ chúng ta sẽ cài đặt các phần mềm và dịch vụ như: dịch vụ web (Apache, Nginx,…) và dịch vụ lưu trữ cơ sở dữ liệu (MySQL database) để vận hành các website cũng như các phần mềm kết nối từ bên ngoài. Tuy nhiên, các dịch vụ này có thể sẽ hoạt động không như ý muốn gây chậm máy chủ và chiếm nhiều tài nguyên khiến cho công việc cũng như website load chậm. Mắt Bão sẽ hướng dẫn các bạn chỉ với những thao tác đơn giản mà hiệu quả để đảm bảo máy chủ hoạt động với hiệu năng tốt nhất.

1.Tối ưu bên trong hệ thống các dịch vụ trên máy chủ.

  • Một trong những thao tác cơ bản để máy chủ hoạt động ổn định đó là thường xuyên cập nhật các bản vá của hệ thống, các bạn có thể thực hiện bằng cách sử dụng các lệnh: yum update và yum upgrade trên máy chủ Centos hoặc apt-get update apt-get upgrade trên máy chủ Ubuntu để thường xuyên cập nhật những bản vá bảo mật cũng như cải thiện hiệu năng của máy chủ. Đối với máy chủ Windows, Microsoft sẽ phát hành các bản vá và cập nhật trong mục Windows Update.
  • Sử dụng Webserver được tối ưu hóa cho website trên máy chủ như Nginx, Apache + Nginx Proxy, LiteSpeed… để đạt được hiệu suất cao và tối ưu tài nguyên trên máy chủ.
  • Sử dụng các dịch vụ lưu trữ cơ sở dữ liệu phiên bản mới như MySQL 5.7 hoặc MariaDB 10.x trở lên. Đối với nhu cầu lưu trữ cơ sở dữ liệu lớn và kết nối từ các máy trạm để quản lý, bạn nên cân nhắc đăng kí thêm máy chủ chỉ để chạy cơ sở dữ liệu để cải thiện hiệu suất.
  • Kiểm tra các tiến trình hoạt động với mức sử dụng tài nguyên cao để tìm nguyên nhân bằng các lệnh top -c free -m
giao diện khi dùng lệnh top -c
giao diện kiểm tra RAM bằng lệnh free -m

2. Tối ưu Website

  • Cập nhật mã nguồn sử dụng phiên bản PHP từ 7.0 trở lên.
  • Cài đặt các trình mở rộng (plugin) lưu cache sẽ cải thiện khả năng tải trang cũng như giảm tải việc hoạt động cao của máy chủ khi liên tục phải truy suất dữ liệu từ hệ thống thay vì từ bộ nhớ cache. Các Plugin thường sử dụng là Memcached, Redis cacheOpcache
  • Sử dụng các dịch vụ CDN để tăng tốc độ tải trang cũng như giảm tải lượng băng thông sử dụng trên máy chủ.
  • Tối ưu hóa các hình ảnh trên website để khách truy cập tránh phải tải xuống các hình ảnh với dung lượng cao gây tình trạng xử lí hình ảnh trên máy chủ và máy khách.
  • Tối ưu các câu truy vấn (query) tới cơ sở dữ liệu, tránh những câu truy vấn quá dài và bị lặp.

3. Tối ưu hóa sử dụng Database

1. Sử dụng MySQL hoặc MariaDB

MySQL và MariaDB miễn phí, dùng ít tài nguyên hệ thống nhưng nếu không cấu hình đúng cách Quý khách sẽ không thể tối ưu hệ thống cơ sở dữ liệu của Quý khách một cách tốt nhất. Trong tập tin cấu hình Quý khách có thể điều chỉnh như sau:

innodb_flush_log_at_trx_commit = 1

key_buffer_size = n

Đây là thông số quan trọng khi Quý khách sử dụng bảng MyISAM .Quý khách nên đặt giá trị này tương đương với 30-40% tổng dung lượng bộ nhớ của Cloud Server. Tuy nhiên, giá trị đúng nhất tùy thuộc vào kích thước indexes, mức tải và kích thước dữ liệu. MyISAM sử dụng bộ đệm của HĐH để làm bộ đệm cho dữ liệu cần truy xuất, hãy thử cho chạy thử website và sau đó có thể điều chỉnh lại cho phù hợp.

innodb_buffer_pool_size = n

Thông số này quan trọng khi dùng bảng InnoDB. Bảng dạng này nhạy cảm với kích thước vùng đệm hơn là MyISAM. MyISAM có thể làm việc bình thường ngay cả khi key_buffer_size lớn hơn kích thước dữ liệu. Vùng đệm của InnoDB dùng cho cả dữ liệu và indexes vì vậy không cần dành vùng nhớ thêm cho HĐH, Quý khách có thể cấu hình giá trị tương đương 70-80% tổng dung lượng bộ nhớ của Cloud Server nếu thật sự cần hiệu năng của Database mạnh nhất.

Viện tối ưu như vậy cần nhiều kinh nghiệm quản trị mới có kết quả tối ưu nhất.

Quý khách có thể dùng script để tối ưu bằng các lệnh như sau:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl

perl mysqltuner.pl

2. Sử dụng Microsoft SQL Server:

Nên chọn các phiên bản miễn phí và nên chọn phiên bản mới nhất. Các bản mới nhất thường có ưu điểm là bảo mật tốt hơn và hiệu năng tốt cao hơn – dĩ nhiên là cũng hơi tốn bộ nhớ và dung lượng đĩa cứng thêm một chút.

Để quản trị SQL Server, Quý khách nên cài đặt SQL Server Management ở máy tính các nhân để tiết kiệm tài nguyên server. Để cài đặt vui lòng tham khảo tại đây.

Nếu là Server website hãy tối ưu hiệu năng của Webserver:

Tối ưu Webserver luôn là việc làm thiết yếu để có thể cải thiện hiệu năng của website cũng như Server.

Các thành phần có thể tối ưu như sau:

Timeout

Chỉ thị “Timeout” được sử dụng để xác định số lượng thời gian Apache sẽ chờ một request GET, POST, PUT và ACKs trên đường truyền trước khi nó tự động ngắt khi thời gian nghỉ vượt quá giá trị này.

Thiết lập với giá trị 120. Tuy nhiên, nó được khuyến khích để thiết lập giá trị này thấp hơn nếu khách hàng của Quý khách có thời gian trễ thấp. Trong một số trường hợp, thiết lập chỉ thị này đến một giá trị thấp có thể gây ra vấn đề. Điều này rất phụ thuộc vào mạng và máy chủ của Quý khách thiết lập. Các tốt nhất là để thử nghiệm với các giá trị khác nhau để tìm một trong đó phù hợp với nhu cầu.

KeepAlive

Chỉ thị “KeepAlive” nếu để là “On”, cho phép kết nối liên tục trên máy chủ web. Đối với hiệu suất tốt hơn, nó được đề nghị để thiết lập tùy chọn này để “On” và cho phép nhiều request cho mỗi kết nối.

MaxKeepAliveRequests

Chỉ thị này được sử dụng để xác định số lượng requests cho phép mỗi kết nối khi tùy chọn KeepAlive trên được thiết lập để “On”. Khi giá trị của tùy chọn này được thiết lập để “0” có nghĩa rằng cho phép không giới hạn số lượng requests trên server. Để tăng hiệu suất máy chủ, nên cho phép không giới hạn số lượng requests.

KeepAliveTimeout

Chỉ thị này được sử dụng để xác định bao nhiêu thời gian, chỉ trong vài giây, Apache sẽ chờ đợi cho một request tiếp theo trước khi đóng kết nối. Khi một request đã được nhận, giá trị thời gian chờ quy định của “Timeout” chỉ được áp dụng.

Đối với các web server nhận được hơn 200 kết nối tại bất kỳ thời điểm nào, tôi thường để giá trị KeepAliveTimeout bằng “10” là một thiết lập tốt cho hiệu suất máy chủ. Giá trị này nên được giữ ở mức thấp như các socket sẽ được nhàn rỗi trong thời gian dài khác.

MaxClients

Chỉ thị này được sử dụng để xác định giới hạn về số lượng các tiến trình con sẽ được tạo ra để phục vụ request. Mặc định nghĩa là lên đến 512 requests HTTP có thể được xử lý đồng thời. Đây là một tham số điều chỉnh quan trọng về hiệu suất của máy chủ web Apache. Đối với hoạt động tải trọng cao, giá trị “512” được khuyến khích. Để sử dụng tiêu chuẩn, có thể thiết lập giá trị “256”.

MinSpareServers

Chỉ thị này được sử dụng để xác định số lượng tối thiểu của các idle process con cần được tạo. Một idle process trong đó là không xử lý một request. Nếu có ít hơn “MinSpareServers” idle process, thì process cha tạo ra con mới với tốc độ tối đa của 1 mỗi giây.

Thiết lập này phải phù hợp với bao nhiêu kết nối mới mong đợi mỗi giây. Giá trị MinSpareServers 10 là thích hợp cho các máy chủ nhận được lên đến 300 kết nối đồng thời.

MaxSpareServer

Chỉ thị này được sử dụng để xác định số lượng tối đa của các idle process con cần được tạo. Nếu có nhiều hơn “MaxSpareServers” idle process, thì process cha sẽ kill các process dư thừa và các process bổ sung này sẽ được chấm dứt. Giá trị idle là 15.

MaxRequestsPerChild

Tùy chọn này “MaxRequestsPerChild” được sử dụng để xác định số lượng requests rằng một process con cá biệt sẽ xử lý. Đặt chỉ thị này để “0” để có được hiệu suất tối đa và khả năng mở rộng cho các máy chủ.

Trên đây là những thao tác cơ bản để thiết lập và tối ưu lại hệ thống máy chủ Cloud Server.

Chúc các bạn thành công!

29/05/2020 Lường Thế Nam
Bài viết này hữu ích không?

Bài viết liên quan