Cách đánh giá trang web bằng Firefox, Siege và Sproxy trên Ubuntu 16.04
Siege là một công cụ kiểm tra và đo điểm chuẩn có thể cấu hình cho các trang web kiểm tra web server bằng cách đưa ra yêu cầu cho các trang web. Số trang mỗi giây mà Siege yêu cầu có thể được đặt thành bất kỳ thứ gì từ vài trang mỗi giây đến số lượng tối đa mà trang web có thể xử lý.Thông tin này cực kỳ hữu ích để khám phá các tắc nghẽn về hiệu suất bằng cách đánh dấu tài nguyên server nào bị cạn kiệt trước và ở mức lưu lượng truy cập nào. Được trang bị thông tin này, bạn có thể áp dụng các thay đổi đối với cấu hình của server hoặc nâng cấp phần cứng của server trước khi một trang trực tuyến bị lỗi. Ngoài ra, các quy trình quản trị hệ thống phổ biến, chẳng hạn như backup , có thể được kiểm tra dưới một tải mô phỏng để xác định ảnh hưởng của chúng đến hiệu suất trang web.
Trong hướng dẫn này, ta sẽ cài đặt và cấu hình Siege để chạy ở chế độ đo điểm chuẩn và duyệt web. Chế độ đo điểm chuẩn thực hiện nhiều yêu cầu mà web server có thể xử lý và chế độ duyệt mô phỏng số lượng khách truy cập có thể cấu hình vào trang web.
Vì cấu hình kết nối Internet chạy qua server proxy đặc biệt đơn giản với Firefox, ta sẽ sử dụng nó để kết nối Internet thông qua server proxy Sproxy . Sproxy, được tạo riêng để làm việc với Siege, ghi lại URL của mọi yêu cầu chuyển qua nó vào một file . Ta sẽ sử dụng file đó để cho Siege biết URL nào cần kiểm tra.
Trong phần đầu tiên của hướng dẫn này, ta sẽ cài đặt Sproxy và cấu hình Firefox để kết nối Internet thông qua nó. Từ đó, ta sẽ tạo một danh sách các URL để kiểm tra Siege và cuối cùng, ta sẽ kiểm tra kết quả kiểm tra và xác định các node thắt hiệu suất.
Cảnh báo: Chỉ sử dụng Siege để kiểm tra các trang web mà bạn sở hữu hoặc được phép kiểm tra. Sử dụng Siege chống lại các trang web trái phép có thể bị coi là tội phạm ở một số quốc gia.
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần :
- Một server Ubuntu 16.04 được cài đặt theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 này , bao gồm user không phải root có quyền sudo và firewall . Đảm bảo mở cổng
8080
trong Bước 7 của hướng dẫn cài đặt server ban đầu bằng lệnhsudo ufw allow 8080
. Đây là cổng mà Sproxy lắng nghe theo mặc định. - Đã cài đặt Firefox. Nếu bạn đang sử dụng macOS hoặc Windows trên máy tính local của bạn , bạn nên download file cài đặt từ trang web chính thức của Mozilla . Nếu bạn đang sử dụng Linux, bạn nên sử dụng trình quản lý gói của bạn hoặc làm theo hướng dẫn chính thức của Mozilla để cài đặt Firefox. Hướng dẫn này bao gồm hướng dẫn làm việc với Firefox version 56.
- Trang web mà bạn sở hữu hoặc có quyền kiểm tra được cung cấp công khai hoặc bạn có thể truy cập từ server mà bạn cài đặt Siege.
Bước 1 - Xây dựng và cài đặt Sproxy
Sproxy không có sẵn dưới dạng file binary đóng gói sẵn, vì vậy bạn sẽ phải download từ trang web chính thức của nó và sau đó xây dựng nó từ nguồn.
Vì quá trình xây dựng của Sproxy dựa trên các công cụ không được cài đặt trên Ubuntu theo mặc định, bạn cần cài đặt thêm một số gói.
Trước tiên, hãy cập nhật danh sách gói của bạn đảm bảo bạn nhận được version mới nhất của mỗi gói bổ sung.
- sudo apt-get update
Sau đó, cài đặt các gói.
- sudo apt-get install build-essential libnet-ssleay-perl liburi-perl libwww-perl
build-essential
libnet-ssleay-perl
cung cấp các thư viện và công cụ chung được yêu cầu để xây dựng phần mềm trên các bản phân phối Linux dựa trên Debian, trong khi libnet-ssleay-perl
, liburi-perl
và libwww-perl
là các thư viện dành cho ngôn ngữ lập trình Perl mà Sproxy phụ thuộc vào để tạo kết nối qua SSL, thao tác các chuỗi URI và giao diện với World Wide Web.
Bây giờ, hãy chuyển sang folder chính của bạn và download repository mã nguồn Sproxy từ trang web chính thức của nó.
- cd ~
- curl -O http://download.joedog.org/sproxy/sproxy-latest.tar.gz
Sau đó, tạo một folder tên là sproxy
để xây dựng Sproxy và extract repository mã nguồn vào folder mới.
- mkdir sproxy
- tar -zxf sproxy-latest.tar.gz --strip-components=1 --directory="sproxy"
Tại đây, tùy chọn -zxf
cho tar vào gunzip
và extract nội dung của sproxy-latest.tar.gz
. Tùy chọn --strip-components=1
tách thành phần đứng đầu đầu tiên khỏi mỗi tên file . Thao tác này sẽ extract repository vào folder sproxy
- được chỉ định bởi tùy chọn --directory
- chứ không phải vào sproxy- 1.02 /sproxy/
.
Bây giờ, hãy chuyển sang folder sproxy
để xây dựng và cài đặt Sproxy với các lệnh configure
và make
.
- cd sproxy
- ./configure
- make
- sudo make install
Lệnh ./configure
kiểm tra xem tất cả các công cụ xây dựng và phụ thuộc chương trình cần thiết có trên hệ thống hay không. Sau đó, lệnh make
sẽ xây dựng các chương trình binary . Cuối cùng, lệnh make install
sao chép các file binary mới vào vị trí chính xác của chúng trên server . Vì Sproxy tạo một folder mới tại /usr/local/lib/sproxy/JoeDog
, bạn cần chạy make install
với quyền root.
Cuối cùng, hãy kiểm tra xem Sproxy có hoạt động chính xác hay không bằng cách quay lại folder chính của bạn để khởi động Sproxy ở chế độ tiết với tùy chọn -v
.
- cd ~
- sproxy -v
Kết quả kết quả cho bạn biết cổng mà Sproxy đang nghe, vị trí của file mà Sproxy đang ghi kết quả và số giây Sproxy sẽ đợi phản hồi từ server từ xa.
Sproxy OutputSPROXY v1.02 listening on port 9001 ...appending HTTP requests to: /user/urls.txt ...default connection timeout: 120 seconds
Nếu Sproxy không khởi động được, hãy xem lại các thông báo trong terminal của bạn để biết thông tin về những gì đã xảy ra.
Khi bạn đã xác minh mọi thứ đang hoạt động, hãy dừng Sproxy bằng CTRL+C
Sproxy hiện đã sẵn sàng để sử dụng, vì vậy hãy sửa đổi Firefox để kết nối với Internet thông qua Sproxy nhằm tạo danh sách các URL để chuẩn với Siege.
Bước 2 - Cấu hình Firefox để sử dụng Sproxy
Bây giờ ta sẽ thay đổi cấu hình mạng của Firefox để gửi tất cả các yêu cầu web thông qua Sproxy, tạo danh sách các mục tiêu điểm chuẩn mà ta cần cho Siege.
Vì ta muốn Sproxy ghi lại mọi URL mà ta truy cập, ta cũng sẽ xóa bộ nhớ đệm web local của Firefox. Cache ẩn web là một repository local hình ảnh và nội dung tĩnh khác từ các trang web mà Firefox đã truy cập. Theo mặc định, Firefox không yêu cầu lại nội dung trang web mà nó đã lưu trong bộ nhớ cache.
Sửa đổi cài đặt mạng
Trước tiên, thay đổi cài đặt Network Proxy trong tab General trên màn hình Preferences chính của Firefox.
- Mở Firefox. (Hướng dẫn này bao gồm các hướng dẫn cho Firefox version 56. Đối với các version khác, hãy xem tài liệu hỗ trợ chính thức của Firefox .)
- Nhấp vào menu hamburger ở góc trên bên phải của màn hình và chọn Tùy chọn để chuyển đến màn hình Chung .
- Cuộn xuống cuối trang và tìm phần Network Proxy .
- Nhấp vào nút Cài đặt… để mở bảng Cài đặt kết nối .
Trong bảng này, hãy cấu hình Firefox để chuyển tất cả các yêu cầu của nó thông qua server Sproxy mà bạn đã cài đặt ở Bước 1 .
- Chọn Cấu hình proxy thủ công .
- Nhập địa chỉ IP công cộng của server Sproxy của bạn vào trường HTTP Proxy .
- Đặt số cổng thành
8080
trong trường Cổng . - Bấm OK để lưu các thay đổi.
Đến đây bạn đã cấu hình Firefox để sử dụng server Sproxy HTTP Proxy của bạn , vì vậy bạn đã sẵn sàng xóa bộ nhớ cache local .
Xóa bộ nhớ cache local
Firefox đề cập đến bộ nhớ cache local là nội dung web Offline . Nó được tìm thấy trong phần Quyền riêng tư và Bảo mật của màn hình Tùy chọn của Firefox.
- Nhấp vào menu hamburger ở góc trên bên phải của màn hình và chọn Tùy chọn để chuyển đến màn hình Chung .
- Nhấp vào Quyền riêng tư & Bảo mật ở phía bên trái của màn hình.
- Cuộn xuống cuối trang và tìm phần Dữ liệu User và Nội dung Web Offline rồi nhấn nút Clear Now .
Bộ nhớ cache web của bạn hiện đang trống, vì vậy địa chỉ của mọi nội dung trang web dựa trên HTTP mà Firefox gặp phải sẽ được chuyển tới Sproxy cho đến khi nội dung đó được lưu vào bộ nhớ cache lại.
Kiểm tra cấu hình
Firefox hiện đã được cấu hình để định tuyến tất cả các yêu cầu dựa trên HTTP thông qua Sproxy, nhưng bạn đã dừng Sproxy bằng CTRL+C
ở cuối Bước 1 . Vì vậy, bạn sẽ thấy một trang lỗi nếu bạn cố gắng truy cập một trang web qua kết nối HTTP với Firefox ngay bây giờ.
Nếu bạn không thấy thông báo lỗi này, hãy xác minh cài đặt Firefox của bạn trùng với ảnh chụp màn hình trước đó và kiểm tra kỹ đảm bảo rằng bạn không kết nối với trang web qua HTTPS.
Khi bạn muốn sử dụng lại Firefox bình thường, hãy theo dõi lại các hướng dẫn trước đó để Sửa đổi Cài đặt Mạng , nhưng lần này, hãy chọn tùy chọn Không có proxy trên bảng Cài đặt Kết nối .
Bây giờ ta đã cấu hình Firefox để kết nối Internet qua Sproxy, ta có thể tạo danh sách URL bằng cách khởi động Sproxy và duyệt trang web mục tiêu bằng Firefox.
Bước 3 - Khởi động Sproxy và Tạo danh sách URL
Trong bước này, ta sẽ khởi động server Sproxy và sử dụng Firefox để duyệt trang web mục tiêu. Sproxy sẽ ghi lại mọi URL dựa trên HTTP mà Firefox yêu cầu vào một file mà ta sẽ sử dụng sau này với Siege.
Đầu tiên, thay đổi folder chính của bạn và khởi động Sproxy.
- cd ~
- sproxy -v -t 180 -p 8080 -o mixed-urls.txt your_server_ip
-v
in các URL được yêu cầu tới terminal .-
-t
là số giây mà Sproxy sẽ đợi phản hồi từ server từ xa. -
-p
là cổng mà Sproxy sẽ lắng nghe. -
-o
là file mà Sproxy sẽ ghi các URL vào. -
your_server_ip
là địa chỉ IP mà Sproxy sẽ liên kết.
Kết quả ngay lập tức cho bạn biết version Sproxy bạn đang chạy, cổng mà Sproxy đang nghe, file mà Sproxy đang ghi URL vào và khoảng thời gian Sproxy sẽ đợi server từ xa phản hồi. Khi bạn bắt đầu duyệt trang web thử nghiệm, kết quả cũng sẽ bao gồm URL của các trang web mà Sproxy đang ghi lại.
Sproxy OutputSPROXY v1.02 listening on port 8080 ...appending HTTP requests to: mixed-urls.txt ...default connection timeout: 180 seconds http://www.example.com/ http://www.example.com/index.html http://www.example.com/about.html
Lưu ý: Sproxy không hỗ trợ kết nối HTTPS, vì vậy bạn phải duyệt trang web thử nghiệm của bạn qua HTTP để tạo danh sách URL. Tuy nhiên, Siege không hỗ trợ HTTPS và ở Bước 5 , ta sẽ khám phá việc sửa đổi danh sách URL chỉ HTTP để kiểm tra trang web trên cả HTTP và HTTPS.
Sau khi bạn đã khởi động Sproxy, hãy quay lại Firefox và bắt đầu duyệt trang web mục tiêu. Sproxy sẽ ghi mọi URL mà Firefox yêu cầu vào file mixed-urls.txt
trong khi in đồng thời các URL đó đến terminal .
Khi bạn đã truy cập tất cả các trang mà bạn định kiểm tra, hãy dừng Sproxy bằng CTRL+C
Đến đây bạn có một danh sách trong file mixed-urls.txt
của mọi URL dựa trên HTTP mà Firefox gặp phải trên trang web thử nghiệm. Bước tiếp theo là xóa bất kỳ URL nào không phù hợp với trang web đảm bảo rằng bạn chỉ sử dụng Siege đối với các domain được ủy quyền.
Bước 4 - Xóa file URL
Các trang web hiện đại thường lưu trữ nội dung ở nhiều vị trí. Nội dung này có thể là hình ảnh được lưu trữ trên mạng phân phối nội dung (CDN) hoặc phông chữ được lưu trữ trên dịch vụ của bên thứ ba như Google. Khi ta chạy Siege, ta muốn đảm bảo ta chỉ là những domain đo điểm chuẩn mà ta có quyền kiểm tra. Do đó, ta phải xóa bất kỳ URL nào trong file mixed-urls.txt
không trỏ đến trang web mục tiêu.
Sử dụng grep , một tiện ích để tìm kiếm đầu vào văn bản thuần túy dựa trên biểu thức chính quy do user chỉ định, để chỉ tìm những URL phù hợp với domain thử nghiệm của bạn và chuyển hướng kết quả đến file mới có tên urls.txt
.
- grep -a "^http://www.example.com" mixed-urls.txt > urls.txt
Cờ -a
yêu cầu grep xử lý file binary như file văn bản. Điều này là cần thiết vì các trình duyệt đôi khi thực hiện các yêu cầu ĐĂNG có chứa dữ liệu binary , sau đó Sproxy sẽ ghi vào mixed-urls.txt
. Nếu có dữ liệu binary trong mixed-urls.txt
, grep sẽ không thành công nếu không có cờ -a
.
Trong thuật ngữ biểu thức chính quy, ký tự ^
cho biết các chuỗi phải bắt đầu bằng http:// www.example.com
để được coi là một kết quả khớp.
Lệnh này sẽ không tạo ra kết quả nào trong terminal, nhưng nó sẽ tạo một file mới có tên là urls.txt
.
Bây giờ, hãy mở urls.txt
đảm bảo rằng mọi dòng đều bắt đầu bằng domain của trang web thử nghiệm của bạn và xóa bất kỳ dòng nào không.
- nano urls.txt
Lưu các thay đổi và đóng file khi bạn chỉnh sửa xong.
Danh sách URL của bạn hiện chỉ chứa những URL mà bạn có quyền kiểm tra, vì vậy ta đã sẵn sàng cài đặt Siege. Nếu bạn cũng muốn đánh giá chuẩn trang web của bạn qua HTTPS, hãy làm theo hướng dẫn tùy chọn ở Bước 5 để tạo file URL thứ hai chứa các version HTTPS của URL của bạn.
Bước 5 - Tạo file URL HTTPS (Tùy chọn)
Nhiều trang web chạy trên cả HTTP và HTTPS hoặc thậm chí trên HTTPS độc quyền, vì vậy, điều quan trọng là bạn cũng có thể đánh giá trang web của bạn qua HTTPS. Đây là điều mà Siege có thể làm. Bạn chỉ cần cung cấp cho nó một danh sách các URL bắt đầu bằng https
.
Đầu tiên, sử dụng lệnh cat
để mở urls.txt
và chuyển nội dung của nó đến sed, một tiện ích để phân tích cú pháp và chuyển đổi văn bản. sed sẽ thay thế tất cả các trường hợp của http
bằng https
và hiển thị kết quả trong terminal .
- cat urls.txt | sed 's|http|https|'
Đầu ra sẽ là cùng một danh sách các URL mà bạn đã có trong file urls.txt
, ngoại trừ mỗi URL được xuất sẽ bắt đầu bằng https
.
Example Outputhttps://www.example.com/ https://www.example.com/index.html https://www.example.com/about.html
Khi bạn đã xác minh kết quả , hãy chạy lại lệnh, lần này ghi kết quả vào một file mới có tên urls-https.txt
.
- cat urls.txt | sed 's|http|https|' > urls-https.txt
Lệnh này sẽ không tạo ra bất kỳ kết quả nào cho terminal , vì tất cả đã được chuyển hướng thành urls-https.txt
.
Bây giờ ta đã có danh sách URL được cập nhật, ta đã sẵn sàng cài đặt Siege và bắt đầu thử nghiệm.
Bước 6 - Đo điểm chuẩn và kiểm tra với Siege
Trước khi bạn có thể bắt đầu kiểm tra trang web của bạn , trước tiên bạn phải cài đặt Siege.
Siege có sẵn từ repository Ubuntu tiêu chuẩn, vì vậy hãy cài đặt nó bằng apt-get
.
- sudo apt-get install siege
Siege có hai phương thức hoạt động: internet và điểm chuẩn. Chế độ Internet mô phỏng khách truy cập duyệt trang web mục tiêu, trong khi chế độ điểm chuẩn thực hiện các yêu cầu nhanh như web server có thể xử lý. Đầu tiên ta sẽ chạy Siege ở chế độ internet.
Chế độ Internet rất tốt cho việc tăng tải từ từ trên server bằng cách tăng số lượng khách truy cập đồng thời theo thời gian. Chế độ này cũng có thể tạo tải liên tục trong thời gian dài, rất hữu ích nếu bạn cần tìm hiểu điều gì xảy ra với hiệu suất trang web của bạn trong các hoạt động như tạo bản backup .
Thay đổi folder chính của bạn và bắt đầu Siege ở chế độ internet. Nếu bạn muốn kiểm tra các địa chỉ chỉ HTTP, hãy thay thế urls_file
bằng urls.txt
. Nếu bạn đã làm theo Bước 5 và muốn kiểm tra địa chỉ HTTPS, hãy thay thế urls_file
bằng urls-https.txt
.
- cd ~
- siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file="urls_file"
--internet
đặt Siege thành chế độ internet.-
--concurrent
là số lượng khách truy cập để mô phỏng. Trong ví dụ này, ta đã yêu cầu Siege mô phỏng 5 user đồng thời để tạo ra một số lưu lượng truy cập mà không áp đảo server . Khi bạn quen hơn với khả năng của server , bạn có thể tăng con số này khi cần. -
--time
thời gian là Siege sẽ chạy trong bao lâu. Giá trị này có thể được đặt bằngS
cho giây,M
cho phút vàH
cho giờ. Trong ví dụ này, ta đã yêu cầu Siege chạy lại trong 30 giây để tạo ra một số lưu lượng truy cập mà không làm tràn ngập server . Trong tương lai, bạn có thể thử nghiệm với các khoảng thời gian khác nhau để xem server của bạn phản ứng như thế nào với tải lưu lượng liên tục. -
--log
là đường dẫn đến vị trí mà bạn muốn Siege ghi kết quả kiểm tra. Theo mặc định, vị trí này là/var/log/siege.log
và yêu cầu quyền sudo. -
--file
là đường dẫn đến file chứa các URL mà Siege sẽ sử dụng để kiểm tra.
Khi bạn khởi động Siege lần đầu, nó sẽ báo số version bạn đang sử dụng và số lượng user đồng thời mà nó đang mô phỏng. Sau đó, nó cho bạn biết rằng bài kiểm tra đã bắt đầu.
Siege Output at Start of Run** SIEGE 3.0.8 ** Preparing 5 concurrent users for battle. The server is now under siege...
Khi Siege đã hoàn tất quá trình chạy hoặc kết thúc bằng CTRL+C
, nó cũng sẽ hiển thị kết quả của bài kiểm tra cùng với vị trí của file log kết quả.
Siege Output at End of Run... Lifting the server siege... done. Transactions: 157 hits Availability: 100.00 % Elapsed time: 29.72 secs Data transferred: 0.15 MB Response time: 0.49 secs Transaction rate: 5.28 trans/sec Throughput: 0.01 MB/sec Concurrency: 2.59 Successful transactions: 161 Failed transactions: 0 Longest transaction: 0.74 Shortest transaction: 0.27 FILE: siege-internet.log You can disable this annoying message by editing the .siegerc file in your home directory; change the directive 'show-logfile' to false.
Vì các số liệu thống kê trong kết quả rất phức tạp, ta sẽ tìm hiểu sâu về chúng trong Bước 7 .
Bây giờ, hãy chạy Siege ở chế độ điểm chuẩn để khám phá số lượng yêu cầu trang tối đa mà trang web có thể phục vụ tại một thời điểm. Đây là thông tin hữu ích khi cố gắng quyết định công nghệ bổ sung nào có thể cải thiện hiệu suất trang web . Ngoài ra, chế độ điểm chuẩn có thể làm nổi bật các tắc nghẽn về tài nguyên, như bạn sẽ thấy khi ta kiểm tra chế độ này kỹ hơn trong Bước 8 .
Bắt đầu lại Siege, lần này ở chế độ điểm chuẩn, bằng cách sử dụng --benchmark
thay vì --internet
.
- siege --benchmark --time=30S --log="siege-benchmark.log" --file="urls_file"
Đầu ra tuân theo cùng một định dạng như trước, ngoại trừ lần này kết quả khác vì chế độ khác nhau.
Siege Output** SIEGE 3.0.8 ** Preparing 5 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 444 hits Availability: 100.00 % Elapsed time: 29.72 secs Data transferred: 18.16 MB Response time: 0.49 secs Transaction rate: 105.28 trans/sec Throughput: 4.41 MB/sec Concurrency: 14.14 Successful transactions: 421 Failed transactions: 0 Longest transaction: 0.74 Shortest transaction: 0.27 FILE: siege-benchmark.log You can disable this annoying message by editing the .siegerc file in your home directory; change the directive 'show-logfile' to false.
Cũng như thống kê từ chế độ internet, thống kê từ chế độ điểm chuẩn rất phức tạp. Ta sẽ tìm hiểu sâu về chúng trong Bước 7 và 8 .
Bây giờ ta đã kiểm tra và đánh giá trang web với Siege, ta có thể khám phá kết quả chi tiết hơn và sử dụng thực tế các số liệu thống kê.
Bước 7 - Tìm hiểu kết quả của Siege
Khi nói đến hiệu suất trang web , xác định các điểm nghẽn và quyết định nơi tập trung nỗ lực nâng cấp của bạn, Siege có thể là một tài sản mạnh mẽ. Số liệu thống kê mà nó cung cấp bao gồm một loạt các số liệu có thể cung cấp cho bạn thông tin chi tiết sâu sắc về tình trạng tổng thể của trang web .
Như ta đã thấy ở Bước 6 , kết quả của Siege thường giống như sau:
Siege Output at End of Run... Transactions: 904 hits Availability: 97.41 % Elapsed time: 4.59 secs Data transferred: 4.37 MB Response time: 0.07 secs Transaction rate: 196.95 trans/sec Throughput: 0.95 MB/sec Concurrency: 12.86 Successful transactions: 904 Failed transactions: 24 Longest transaction: 1.95 Shortest transaction: 0.00 ...
Cụ thể, các chỉ số này nghĩa là :
-
Transactions
là tổng số yêu cầu mà Siege đã thực hiện. -
Availability
là phần trăm yêu cầu mà web server đã phản hồi, bao gồm mã lỗi HTTP cấp 4xx và 5xx . -
Elapsed time
làElapsed time
chạy thử nghiệm. -
Data transferred
là tổng lượng băng thông mà Siege sử dụng để kiểm tra trang web. -
Response time
là lượng thời gian trung bình web server cần để phản hồi một yêu cầu. -
Transaction rate
là số lượng giao dịch trung bình mỗi giây mà web server phục vụ. -
Throughput
là lượng dữ liệu mỗi giây mà web server phục vụ. -
Concurrency
là số lượng kết nối mở đồng thời trung bình. -
Successful transactions
là tổng số giao dịch đã được phản hồi với mã trạng thái HTTP nhỏ hơn 400. -
Failed transactions
là tổng số giao dịch được phản hồi với mã trạng thái HTTP lớn hơn 400 . -
Longest transaction
là thời gian yêu cầu lâu nhất để hoàn thành. -
Shortest transaction
là thời gian yêu cầu ngắn nhất để hoàn thành.
Transaction rate
và Failed transactions
cung cấp kiểm tra nhanh nhất về tình trạng tổng thể của web server của bạn.
Transaction rate
thể hiện tốc độ trang web , vì nó là số trang mỗi giây mà web server của bạn có thể phục vụ. Con số này càng cao thì trang web càng có nhiều khách truy cập và khách truy cập sẽ nhận được mỗi trang nhanh hơn. Nếu bạn đang sử dụng Siege để cải thiện khả năng phản hồi chung của trang web, thì đây là con số mà bạn muốn tăng lên.
Giá trị Failed transactions
đề cập đến bất kỳ phản hồi nào từ web server có chứa mã lỗi, chẳng hạn như 503 Service Unavailable
. Những lỗi này thường chỉ ra các vấn đề như database không thể xử lý số lượng yêu cầu mà nó đang nhận được hoặc web server hết RAM. Nếu con số này là bất kỳ điều gì khác với số 0, bạn nên xem các file log của web server của bạn để xem chính xác lỗi nào đã xảy ra và để có hướng giải quyết sự cố.
Khi bạn áp dụng các thay đổi để tăng Transaction rate
và giảm các Failed transactions
theo thời gian, cũng hãy nhớ tham khảo file log bạn tạo với mỗi lần chạy Siege, vì nó bao gồm tất cả các thống kê giống nhau mà bạn thấy trong terminal cũng như ngày và thời gian của bài kiểm tra. Điều này sẽ giúp bạn theo dõi quỹ đạo tổng thể của những nỗ lực của bạn.
Bây giờ ta đã kiểm tra kết quả của Siege để xác định tốc độ và độ mạnh của web server của bạn, đã đến lúc xem cách ta có thể sử dụng cùng thông tin này để xác định và loại bỏ các node thắt hiệu suất.
Bước 8 - Xác định các điểm nghẽn về hiệu suất
Trong chế độ điểm chuẩn, Siege thực hiện nhiều yêu cầu nhất mỗi giây mà web server có thể phục vụ. Khi server đạt đến số lượng trang tối đa mà nó có thể phục vụ, nó đã đạt đến giới hạn tài nguyên .
Bốn tài nguyên có khả năng bị ảnh hưởng nhất là:
- RAM
- CPU
- Đĩa
- Băng thông mạng
Để tận dụng tối đa chế độ benchmark, bạn cần chạy một số công cụ bổ sung cùng lúc với Siege, để bạn có thể theo dõi những gì xảy ra trên hệ thống của bạn khi Siege tăng tải thử nghiệm.
Bạn có thể theo dõi ba tài nguyên đầu tiên - RAM, CPU và việc sử dụng đĩa - với trên cùng là công cụ cung cấp chế độ xem động, thời gian thực về tài nguyên hệ thống.
Ubuntu có sẵn phần trên theo mặc định, vì vậy bạn không cần phải cài đặt nó. Đơn giản chỉ cần chạy lệnh, top
.
Thông tin hiển thị ở trên cùng được chia thành hai phần.
Sample top Outputtop - 21:02:32 up 50 min, 1 user, load average: 0.07, 0.02, 0.00 Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie %Cpu(s): 37.3 us, 7.3 sy, 0.0 ni, 99.3 id, 8.3 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1015200 total, 63536 free, 431456 used, 520208 buff/cache KiB Swap: 0 total, 0 free, 0 used. 512308 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3249 www-data 20 0 469592 92276 33488 D 24.6 9.1 0:05.01 apache2 3239 www-data 20 0 442836 75080 41896 S 5.6 7.4 1:31.97 apache2 3572 www-data 20 0 424372 35272 21164 S 4.0 3.5 0:02.69 apache2
Phần trên, bao gồm năm dòng kết quả , hiển thị tóm tắt về việc sử dụng hệ thống hiện tại.
Phần dưới hiển thị danh sách các quy trình server riêng lẻ hiện đang chạy trên hệ thống cùng với số nhận dạng của từng quy trình, chủ sở hữu, mức độ ưu tiên, giá trị tốt, sử dụng bộ nhớ ảo, sử dụng bộ nhớ vật lý, sử dụng bộ nhớ dùng chung, trạng thái, phần trăm sử dụng CPU, phần trăm sử dụng bộ nhớ, tổng thời gian hoạt động và tên.
Mặc dù top là một công cụ hữu ích để quản lý các quy trình và giám sát việc sử dụng CPU , trong trường hợp này, ta muốn xem nó có thể cho ta biết những gì về hệ thống của ta dưới sức ép của một bài kiểm tra điểm chuẩn Siege.
Việc sử dụng CPU đọc, %Cpu(s): 37.3 us, 7.3 sy,
. Các giá trị này cho ta biết rằng các quy trình user đang tiêu thụ 37,3% CPU và các quy trình hệ thống đang tiêu thụ 7,3%. Nếu bạn cộng hai giá trị này với nhau, bạn sẽ nhận được tổng mức sử dụng CPU.
Nếu server của bạn đang chạy bằng hoặc gần mức sử dụng 100% CPU, hãy kiểm tra các mục trên cùng trong danh sách các quy trình để xem liệu một hoặc nhiều quy trình có đang tiêu thụ lượng CPU cao bất thường hay không. Nếu vậy, hãy xem xét cấu hình lại hoặc tinh chỉnh các quy trình để sử dụng ít CPU hơn. Nếu không được, bạn có thể cần phải nâng cấp CPU trên server của bạn .
Bây giờ, hãy kiểm tra việc sử dụng bộ nhớ.
Sample top Outputtop - 21:02:32 up 51 min, 1 user, load average: 0.21, 0.47, 0.80 Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie %Cpu(s): 17.4 us, 3.4 sy, 0.0 ni, 79.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 991.406 total, 223.914 free, 395.621 used, 371.871 buff/cache MiB Swap: 0.000 total, 0.000 free, 0.000 used. 526.156 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3249 www-data 20 0 469592 92276 33488 D 24.6 9.1 0:05.01 apache2 3239 www-data 20 0 442836 75080 41896 S 5.6 7.4 1:31.97 apache2 3572 www-data 20 0 424372 35272 21164 S 4.0 3.5 0:02.69 apache2
Theo mặc định, mức sử dụng RAM được hiển thị bằng kilobyte trên dòng thứ tư. Trong kết quả ví dụ trước, ta đã nhấn SHIFT+E
một lần, chuyển đổi giá trị thành megabyte để làm cho các số dễ làm việc hơn. Nhấn SHIFT+E
lần thứ hai để chuyển đổi giá trị thành gigabyte và tiếp tục nhấn SHIFT+E
để quay lại màn hình kilobyte mặc định.
total
giá trị là tổng dung lượng bộ nhớ có sẵn trên server . Lưu ý kernel dự trữ một số bộ nhớ khi khởi động, vì vậy máy 1024 MB sẽ hiển thị 991 MB bộ nhớ ở đây.
Bản ghi nhớ avail Mem
hiển thị dung lượng bộ nhớ còn lại trên hệ thống. Con số này sẽ nhỏ hơn khi RAM được sử dụng nhiều hơn và cuối cùng sẽ bằng 0 khi không còn bộ nhớ còn lại trên server .
Đối với việc sử dụng CPU, nếu avail Mem
đang chạy bằng hoặc gần bằng 0, hãy kiểm tra danh sách các quy trình cho các mục tiêu tốn lượng bộ nhớ cao bất thường. Nếu có thể, hãy cấu hình lại hoặc tinh chỉnh các quy trình đó để sử dụng ít bộ nhớ hơn hoặc nâng cấp dung lượng RAM trên server của bạn.
Cuối cùng, hãy xem việc sử dụng đĩa.
Sample top Outputtop - 21:02:32 up 52 min, 1 user, load average: 0.21, 0.47, 0.80 Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie %Cpu(s): 17.4 us, 3.4 sy, 0.0 ni, 79.2 id, 31.6 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1015200 total, 63536 free, 431456 used, 520208 buff/cache KiB Swap: 0 total, 0 free, 0 used. 512308 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3249 www-data 20 0 469592 92276 33488 D 24.6 9.1 0:05.01 apache2 3239 www-data 20 0 442836 75080 41896 S 5.6 7.4 1:31.97 apache2 3572 www-data 20 0 424372 35272 21164 S 4.0 3.5 0:02.69 apache2
Việc sử dụng đĩa mà ta quan tâm, I / O wait, không phải là dung lượng đĩa còn trống bao nhiêu mà là việc truy cập đĩa đang làm chậm server . Việc truy cập đĩa, đặc biệt là trên server sử dụng đĩa cứng dạng đĩa quay, rất chậm và khi nào server truy cập đĩa, CPU phải đợi thông tin được truy xuất.
Hàng đầu báo cáo thông tin này dưới dạng giá trị wa
. Nó chỉ ra phần trăm thời gian mà (các) CPU đang ở chế độ chờ đợi dữ liệu từ đĩa. Con số này càng gần 0,0 càng tốt.
Trong ví dụ trước, giá trị wa
là 31.6
. Điều này nghĩa là CPU đang dành một phần ba thời gian để đợi dữ liệu từ đĩa. Đây là một khoảng thời gian lớn và nó sẽ ảnh hưởng nghiêm trọng đến hiệu suất của trang web.
I / O wait thường là kết quả của việc truy cập đĩa để tìm file hoặc thực hiện các cuộc gọi lặp lại đến database local . Nếu wa
lớn hơn 0,0, hãy cân nhắc việc di chuyển các tài nguyên tĩnh đến một vị trí từ xa, như mạng phân phối nội dung (CDN) hoặc tìm cách giảm số lượng chuyến đi mà ứng dụng của bạn thực hiện đến database local liên quan của chúng.
Nhấn Q
để thoát khỏi đầu trang.
Tài nguyên cuối cùng mà ta sẽ xem xét là sử dụng mạng. Để theo dõi điều này, ta sẽ sử dụng công cụ Bandwidth Monitor New Generation.
Cài đặt công cụ này với apt-get
sau đó chạy nó bằng lệnh, bwm-ng
.
- sudo apt-get install bwm-ng
- bwm-ng
Phần trên cùng của kết quả hiển thị số version của Bandwidth Monitor New Generation, tần suất dữ liệu đang được cập nhật (0,5 giây một lần theo mặc định), nguồn đầu vào đang được sử dụng để xác định các network interface có sẵn ( /proc/net/dev
theo mặc định là bật Linux) và số liệu thống kê đang được hiển thị ( rate
sử dụng dữ liệu theo mặc định).
Phần dưới cùng của kết quả bao gồm một bảng báo cáo lượng dữ liệu đến ( Rx
), dữ liệu đi ( Tx
) và tổng dữ liệu ( Total
) trên mỗi network interface .
Hàng cuối cùng hiển thị tổng giá trị trên tất cả các network interface .
Sample bwm-ng Output bwm-ng v0.6.1 (probing every 0.500s), press 'h' for help input: /proc/net/dev type: rate - iface Rx Tx Total ============================================================================== lo: 0.00 KB/s 0.00 KB/s 0.00 KB/s eth0: 30.99 KB/s 499.11 KB/s 530.11 KB/s ------------------------------------------------------------------------------ total: 30.99 KB/s 499.11 KB/s 530.11 KB/s
Khi băng thông mạng gây ra sự cố chạm đáy, thường là do Tx
đã đạt mức tối đa. Để giải quyết vấn đề này, hãy lấy tốc độ kết nối server của bạn từ nhà cung cấp dịch vụ lưu trữ và so sánh với tốc độ được hiển thị bởi bwm-ng
. Nếu tốc độ được hiển thị bởi bwm-ng
liên tục bằng hoặc gần bằng băng thông tối đa có sẵn cho server của bạn, thì bạn cần phải xem xét nâng cấp gói lưu trữ của bạn hoặc chuyển hoàn toàn sang một nhà cung cấp khác.
Nhấn CTRL+C
để thoát Bandwidth Monitor New Generation khi bạn hoàn tất quá trình kiểm tra.
Kết luận
Trong hướng dẫn này, ta đã sử dụng công cụ đo điểm chuẩn Siege và server proxy Sproxy để tạo tải có thể cấu hình trên web server và đẩy nó lên thông lượng tối đa. Những công cụ này cực kỳ hữu ích cho bất kỳ triển khai trang web nào, vì chúng giúp xác định các vấn đề về hiệu suất và lập kế hoạch nâng cấp đầy đủ thông tin.
Để biết một cách khác để giảm thiểu I / O đĩa và tắc nghẽn bộ nhớ, hãy xem Varnish HTTP Cache . Varnish là một Reverse Proxy dễ sử dụng để lưu trữ nội dung trang web tĩnh, giảm cả việc sử dụng RAM và I / O đĩa.
Nếu trang web sử dụng PHP, hãy xem xét cài đặt PHP-FPM như một giải pháp thay thế cho việc triển khai PHP tiêu chuẩn. PHP-FPM giảm yêu cầu CPU để cung cấp các trang web dựa trên PHP, do đó tăng tốc toàn bộ trang web .
Các tin liên quan
Cách cài đặt Nagios 4 và theo dõi server của bạn trên Ubuntu 16.042017-11-06
Cách cài đặt và cấu hình Nextcloud trên Ubuntu 16.04
2017-10-06
Cách cài đặt WordPress với Caddy trên Ubuntu 16.04
2017-08-03
Cách cài đặt và cấu hình GoCD trên Ubuntu 16.04
2017-08-01
Cách cấu hình GoCD với Let's Encrypt SSL Certificates trên Ubuntu 16.04
2017-08-01
Cách cài đặt và cấu hình SimpleSAMLphp để Xác thực SAML trên Ubuntu 16.04
2017-07-30
Cách sử dụng chế độ độc lập của Certbot để lấy chứng chỉ SSL mã hóa trên Ubuntu 16.04
2017-07-28
Cách sử dụng chế độ độc lập của Certbot để lấy chứng chỉ SSL mã hóa trên Ubuntu 16.04
2017-07-28
Cách cài đặt Virtualmin với Webmin, LAMP, BIND và PostFix trên Ubuntu 16.04
2017-07-26
Cách cài đặt Matrix Synapse trên Ubuntu 16.04
2017-07-21