Trang chủ Cloud Computing

Giảm tải máy chủ cho trang web Apache và PHP

Giảm tải máy chủ cho trang web Apache và PHP

Khi server load càng thấp, trang web của bạn phục vụ nội dung cho khách truy cập càng nhanh, phục vụ nội dung càng nhanh, bạn càng có thể tăng doanh số, tăng người theo dõi và gia tăng niềm tin cho khách truy cập nhanh hơn.

Sau đây là các số liệu quan trọng bạn cần kiểm tra:

1. Server load

Server load tùy thuộc vào số lượng CPU máy chủ sử dụng, con số này càng thấp càng tốt... Dưới đây là một số hướng dẫn sơ bộ để đánh giá xem Server load có bình thường không.

Nếu server load là 2,37 (với máy 4 core CPU), điều đó có nghĩa là trang web của bạn đang trải qua tải vừa phải. Vì 2,37 rơi vào khoảng 1,65-2,85 cho máy chủ 4 cores CPU, khoảng này chưa xuất hiện vấn đề.

Tuy nhiên, nếu dữ liệu vào khoảng 4,51 (với máy 2 core CPU), thì trang web đang trong tình trạng tải máy chủ cao/ quá mức. Đó là bởi vì 4.51 vượt quá 1.9, là ngưỡng cho máy chủ 2 cores CPU.

Nếu ổn định liên tục trong khoảng 3,8 đến 4.0 cho máy chủ 4 cores CPU, thì là lúc bạn cần phải chú ý.

Hãy theo dõi server load trong các thời điểm khác nhau trong ngày chứ không chỉ trong một dịp. Tăng số lượng core CPU không phải là một giải pháp lâu dài cho tất cả các vấn đề tải máy chủ cao. Bạn vẫn cần kiểm tra trạng thái trang web tổng thể để đảm bảo không có ứng dụng web nào có khả năng lạm dụng tải máy chủ.

2. Bộ nhớ RAM được sử dụng

Không nên lúc nào cũng vượt quá 85%. Việc sử dụng bộ nhớ cao có thể ảnh hưởng đến server load bởi vì máy chủ sẽ có nguy cơ thiếu bộ nhớ bất kỳ lúc nào. Khi thiếu RAM,, servernó sẽ sử dụng swap file - một phần của ổ cứng để thay thế (tương tự như nguyên tắc của các page file trong Windows). Càng nhiều tác vụ đọc và ghi trên ổ cứng, mức sử dụng CPU càng cao, do đó làm tăng server load.

3. Dung lượng tmp

Đây là không gian lưu trữ cho các tệp tạm thời, khi hết dung lượng, rất nhiều tính năng trang web sẽ bị ảnh hưởng nghiêm trọng. Dung lượng sử dụng /tmp Không nên ở trong mức 85% đến 100% liên tục

4. Triển khai Captcha trên website

Có những bot độc hại được lập trình nhằm khai thác các tính năng của website. Ví dụ: một công cụ hữu ích trên trang web không chỉ thu hút khách truy cập bình thường mà cả những người gửi thư rác.

Nếu ứng dụng web chấp nhận input của người dùng và không được bảo vệ bằng hình ảnh xác thực, kẻ gửi thư rác có thể viết các tập lệnh để khai thác nó. Sau khi được khai thác. Bots có thể thực hiện hàng ngàn yêu cầu trong một khoảng thời gian nhỏ, điều này sẽ làm tăng tải máy chủ của trang web lên.

1. Kiểm tra tất cả các trang và tính năng chấp nhận input của người dùng.

2. Áp dụng captcha cho các trang này để đảm bảo tất cả người dùng được xác minh là con người mà không phải bot.

Đối với PHP, giải pháp captcha được đề xuất là Recaptcha: http://code.google.com.vn/apis/recaptcha/docs/php.html

Kích hoạt tính năng nén Gzip

Nén Gzip giúp giảm băng thông trang web vì thông tin truyền từ máy chủ đến người dùng đã được nén hoặc giảm đáng kể kích thước. Giảm băng thông giúp giảm đáng kể thời gian truyền tải, từ đó giảm tải máy chủ.

1. Kiểm tra xem đã bật nén gzip chưa bằng cách sử dụng công cụ: http://www.whatsmyip.org/http_compression/

2. Nhập URL

Nếu bạn không thấy kết quả hiển thị dạng như sau: "http://www.example.com is compressed" tức bạn chưa kích hoạt Gzip trên máy chủ.

3. Để kích hoạt tính năng nén Gzip trên các máy chủ Apache, kích hoạt module mod_deflate (https://httpd.apache.org/docs/current/mod/mod_deflate.html)

Đặt giới hạn cho việc thực thi thời gian chạy PHP Script

Giả sử bạn có một ứng dụng web tạo số ngẫu nhiên giữa X và Y, với số lượng được chỉ định bởi người dùng. Nếu bạn không đặt giới hạn cho các tập lệnh PHP thực thi ứng dụng này, thì nó dễ bị lạm dụng, có thể tiêu tốn rất nhiều tải máy chủ.

Tại sao? Trong thực tế, người dùng bình thường có thể muốn tạo 50 số ngẫu nhiên trong khoảng từ 1 đến 100. Đây không phải là một hoạt động sử dụng nhiều CPU. Nhưng điều gì sẽ xảy ra nếu một người dùng độc hại nhập số từ 0,01 đến 1000000000000000 và muốn tạo 10000000000 số ngẫu nhiên. Điều này tiêu tốn rất nhiều tài nguyên máy chủ. Mọi thứ sẽ trở nên tồi tệ hơn nếu một bot làm điều này có chủ ý.

1. Kiểm tra các ứng dụng web và đảm bảo thiết lập các giới hạn

2. Bảo vệ các ứng dụng web bằng captcha

3. Tìm kiếm các lỗi trong tập lệnh gây ra vòng lặp vô hạn…

Ngăn chặn các trang web trái phép từ "HotLinking" vào trang web của bạn

Nếu bạn có một website, người dùng độc hại có thể lạm dụng trang web của bạn bằng cách thực hiện mở rộng hotlinking trực tuyến. Các tệp, hình ảnh,... trên máy chủ tùy thuộc vào ứng dụng, có thể có kích thước lớn.

Nếu bạn cho phép các trang web khác liên kết đến tệp đó, bất kỳ bot và người dùng nào đến từ các trang web khác đều có thể tải xuống các tệp lớn đó, điều này làm tăng tải máy chủ.

1. Sử dụng .htaccess nằm trong root directory để chỉ cho phép các trang web được ủy quyền truy cập từ xa các tệp. Các trang web khác sẽ bị chặn. Ví dụ cú pháp:

RewriteEngine on

# Options +FollowSymlinks

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://(subdomain.)?yourdomain.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://(www.)?allowthisdomain1.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://(www.)?allowthisdomain2.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://(subdomain.)?example.com/.*$ [NC]

RewriteRule .(gif|jpg|jpeg|png|bmp|js|css|mpg|mp3|zip|ppt|pps|xls|inc|gz|pdf|doc|wav)$ – [F]

Đơn giản chỉ cần thay thế your your youromain.com bằng tên miền của bạn (trang web mà bạn muốn giảm tải máy chủ). Nếu bạn có một tên miền phụ trong tên miền chính, hãy thêm nó vào.

Nếu bạn cho phép các tên miền khác, thì hãy đặt chúng trong mục "allowthisdomain1.com". Bạn cũng có thể chỉ định các loại tệp mà bạn muốn ngăn không bị liên kết bởi các trang web khác.

Sử dụng AJAX cùng với PHP

AJAX là một công nghệ tuyệt vời cho phép người dùng tương tác với các ứng dụng web (chẳng hạn như các biểu mẫu web) mà không cần tải lại trang. AJAX chỉ cập nhật các phần cần thiết trong HTML, không yêu cầu tải lại trang. Điều này làm giảm đáng kể server load.

Sử dụng AJAX với PHP tham khảo tại: http://www.w3schools.com/php/php_ajax_php.asp

Website Caching

Tùy thuộc vào webhost, bạn cần đảm bảo mod_headers được bật cho máy chủ web Apache. Sau đó thêm các dòng sau vào htaccess:

<IfModule mod_headers.c>

<FilesMatch ".(ico|pdf|flv)$">

Header set Cache-Control "max-age=29030400, public"

</FilesMatch>

<FilesMatch ".(jpg|jpeg|png|gif|swf)$">

Header set Cache-Control "max-age=604800, public"

</FilesMatch>

<FilesMatch ".(xml|txt|css|js)$">

Header set Cache-Control "max-age=172800, proxy-revalidate"

</FilesMatch>

<FilesMatch ".(html|htm|php)$">

Header set Cache-Control "max-age=60, private, proxy-revalidate"

</FilesMatch></IfModule>

(Nguồn: http://www.askapache.com/htaccess/speed-up-sites-with-htaccess-caching.html)

Tại sao caching giúp giảm tải server load? Sau khi khách truy cập trang, nội dung trang web (hình ảnh,..) sẽ nằm trong bộ đệm của trình duyệt. Nếu nội dung này (chẳng hạn như hình ảnh) kéo dài đến 2 tuần (như được cấu hình ở trên), thì trình duyệt khách truy cập sẽ không yêu cầu lại nội dung vì nó đã được lưu vào bộ nhớ cache. Bằng cách giảm yêu cầu máy chủ, tải máy chủ cũng được giảm theo.

Sử dụng robot.txt hoặc .htaccess để chặn Bots

Robots.txt (http://support.microsoft.com/kb/217103) và cấu hình "Deny from all" (http://www.kavoir.com/2009/01/htaccess-deny-from-all-restrict-directory-access.html) trong .htaccess giúp ngăn người dùng trái phép như bot truy cập các phần trên trang web.

Nếu chúng truy cập vào thu thập dữ liệu, sẽ tiêu thụ một lượng lớn băng thông và tải máy chủ. Sử dụng kết hợp robot.txt và .htaccess sẽ giúp ngăn chặn điều này.

Nguồn: tech.vccloud.vn

>> Có thể bạn quan tâm: Sử dụng CDN để giảm tải cho Server

Kể từ ngày 05/11/2018, VCCloud chính thức đổi tên thành BizFly Cloud - là nhà cung cấp các dịch vụ đám mây hàng đầu tại Việt Nam hiện nay với các dịch vụ nổi bật như: BizFly Cloud Server, BizFly CDN, BizFly Load Balancer, BizFly Pre-built Application, BizFly Business Mail, BizFly Simple Storage. Hãy tăng tốc thích nghi cho doanh nghiệp cùng các giải pháp công nghệ của BizFly Cloud tại đây.