Quy định server busy(overload) 2007-07-09 09:28:55
Khi site của bạn có số lượng truy cập tương đối lớn thì việc quá tải(overload) của server hoàn toàn có thể xảy ra,
ví dụ: giả sử server của bạn chỉ có thể xử lý được 1000 truy cập tại cùng 1 thời điểm, thì khi người thứ 1001 truy cập sẽ làm cho server bị overload(không truy cập được) để hạn chế tình trạng này ta có thể qui định giới hạn truy cập ví dụ n<1000 thì khi người truy cập thứ n+1 sẽ hiện ra câu thông báo: server busy, xin quay lại sau
cách thực hiện: chạy đoạn code này trước khi thực hiện các xử lý khác
<?php
function server_busy($numer){
if (PHP_OS == 'Linux' AND @file_exists('/proc/loadavg') AND $filestuff = @file_get_contents('/proc/loadavg')){
$loadavg = explode(' ', $filestuff);
if (trim($loadavg[0]) > $numer) {
print 'server busy,quay lại sau....';
exit(0);
}
}
}
?>
* chỉ có thể thực hiện việc này cho server linux, các server windows không thực hiện được
Tác giả: TG
Tra loi 10 comment(s) 2007-07-09 09:28:55
Thanh Quang 2007-09-18 02:02:43
thanks!
Tra loi
TG 2007-09-18 02:05:16
Tra loi
Thanh Quang 2007-09-18 04:51:01
Tra loi
TG 2007-09-19 01:14:47
Tra loi
vik 2009-05-27 02:55:05
Cho mình hỏi đoạn code trên tự động tính 1000 người truy cập hay sao mà mình ko thấy số 1000 đâu thể có thể thay đổi dc ?
<?php
function server_busy($numer){
if (PHP_OS == 'Linux' AND @file_exists('/proc/loadavg') AND $filestuff = @file_get_contents('/proc/loadavg')){
$loadavg = explode(' ', $filestuff);
if (trim($loadavg[0]) > $numer) {
print 'server busy,quay lại sau....';
exit(0);
}
}
}
?>
Tra loi
cóc 2009-05-27 04:42:05
Là cái biến number đó
<?php
server_busy(1000);
?>
Tra loi
cóc 2009-05-27 04:43:33
Tra loi
Hao Nam 2009-06-16 05:23:35
(ví dụ trong 1s request lên đến vài chục lượt vào link đó)
Tra loi
lamvnd@gmail.com 2010-03-02 08:11:02
if (_LOAD_LTD_ > 0 && function_exists('sys_getloadavg')) {
$loadavg = sys_getloadavg();
if ($loadavg[0] > _LOAD_LTD_) {
echo '<h3>Server too busy !!! Please visit later</h3>';
exit();
}
}
Trong đó hàm sys_getloadavg() chỉ hỗ trợ với PHP 5 >= 5.1.3
Hàm sys_getloadavg() trả về mảng 3 phần tử, với phần tử thứ nhất là thống kê tải server trong một 1, phần tử thứ 2 là trong 5 phút, phần tử thứ 3 là trong 15 phút, thường chúng ta chỉ quan tâm đến phần tử đầu.
Cũng xin chú ý rằng với một con server bình thường loadavg trên 5 là ở mức cảnh báo, nên mức đề nghị mặc định là 5.
Tra loi
ndthuan 2010-03-05 05:08:26
Load ở đây ko phải là số user online đồng thời mà là mức tải của CPU. Ta có cảm giác CPU xử lí tác vụ "cùng lúc" nhưng ko phải, nó chạy process này 1 chút và nhảy qua process khác... luân phiên như vậy. Nên cùng lúc chỉ có x process được thực thi (x = số nhân của CPU).
Nếu server có 4 nhân thì mức tải lí tưởng là 4 trở xuống, còn trên 4 bắt đầu là quá tải. Tuy nhiên theo kinh nghiệm của mình thì từ trên 4 tới 6 vẫn trong dạng chịu đựng được, vẫn chống đỡ được. Còn thường xuyên trên 6 thì nên nghĩ đến việc mua thêm CPU. CPU càng mạnh thì giải quyết process càng nhanh và giảm thời gian chờ của các process khác.
Tra loi
Y kien