Thứ năm, 21/11/2013 | 00:00 GMT+7

Cách sử dụng ApacheBench để thực hiện kiểm tra tải trên VPS Arch Linux

Kiểm tra tải là một ý tưởng hay trước khi triển khai. Mặc dù nó không phải là điều gì đó nên bỏ qua, nhưng đôi khi thật tuyệt khi nhanh chóng cài đặt một tình huống tốt nhất cho một dự án trước khi chạy các thử nghiệm chi tiết hơn.


Công cụ ApacheBench (ab) có thể tải các server thử nghiệm bằng cách gửi một số lượng tùy ý các yêu cầu đồng thời. Mặc dù ab được thiết kế để thử nghiệm cài đặt Apache, nó được dùng để đánh giá chuẩn cho bất kỳ server HTTP nào.

Trong hướng dẫn này, ta sẽ xem cách một trình thông dịch Ruby với các server khác nhau hoạt động dưới tải. Các bước hướng dẫn giả sử một hình ảnh Arch Linux x86_64 mới. Kết quả thu được từ một server 512 MB.

Cài đặt


Làm mới database gói.

pacman -Sy 

Cài đặt gói apache để có quyền truy cập vào ApacheBench. Ngoài ra, nó được chứa trong gói apache-tools trong AUR.

pacman -S apache 

User quyền có giới hạn


Tiếp theo, tạo user sẽ quản lý Ruby. Bạn không nên chạy một số lệnh trong phần tiếp theo dưới dạng root.

useradd -m -d /home/test test 

Chuyển sang user mới.

su test 

RVM


Trình quản lý Phiên bản Ruby giúp dễ dàng làm việc với các môi trường Ruby khác nhau. Nó xử lý quá trình cài đặt các version Ruby cụ thể và cách ly các tập đá quý. Nó hiện được cài đặt bằng cách chạy một tập lệnh bash từ trang web của họ.

\curl -L https://get.rvm.io | bash -s stable 

Để sử dụng lệnh rvm, trước tiên bạn cần chạy tập lệnh rvm.

source ~/.rvm/scripts/rvm 

Tiếp theo, cài đặt Ruby 2.0.0. RVM thường xây dựng Ruby từ nguồn, vì vậy bước này có thể mất một lúc.

rvm install 2.0.0 

Chuyển sang Ruby mới. Điều này có thể xảy ra theo mặc định sau khi cài đặt, nhưng việc kiểm tra không ảnh hưởng gì.

rvm use 2.0.0 

Thử nghiệm


Bây giờ Ruby đã được cài đặt, bạn có thể tạo một trang web đơn giản và xem nó có thể xử lý bao nhiêu yêu cầu.

Cài đặt Sinatra. Đó là một microframework / DSL để tạo các ứng dụng web Ruby. Các cờ –no- * bỏ qua tài liệu.

gem install sinatra --no-rdoc --no-ri 

Tạo ứng dụng sinatra mẫu chỉ vang lên “xin chào thế giới”.

cd ~ vi app.rb  # app.rb require 'sinatra'  get '/' do   'hello world' end 

Chạy server .

ruby app.rb 

Cuối cùng thì server cũng được khởi động, bạn có thể bắt đầu kiểm tra tải. Một lệnh gọi tới ab trông như thế này:

ab -n <num_requests> -c <concurrency> <addr>:<port><path> 

Mở một terminal khác và ssh vào server . Chạy thử nghiệm với ApacheBench. Tôi đã sử dụng 1000 yêu cầu với đồng thời là 100. Đừng quên dấu '/' cuối cùng cho đường dẫn.

ab -n 1000 -c 100 http://localhost:4567/  Server Software:        WEBrick/1.3.1 Server Hostname:        0.0.0.0 Server Port:            4567  Document Path:          / Document Length:        11 bytes  Concurrency Level:      100 Time taken for tests:   2.950 seconds Complete requests:      1000 Failed requests:        0 Write errors:           0 Total transferred:      288000 bytes HTML transferred:       11000 bytes Requests per second:    338.94 [#/sec] (mean) Time per request:       295.041 [ms] (mean) Time per request:       2.950 [ms] (mean, across all concurrent requests) Transfer rate:          95.33 [Kbytes/sec] received  Connection Times (ms)               min  mean[+/-sd] median   max Connect:        0    1   2.8      0      15 Processing:   117  285  94.3    268     553 Waiting:       70  248  91.8    234     544 Total:        117  286  93.6    271     553  Percentage of the requests served within a certain time (ms)   50%    271   66%    327   75%    354   80%    361   90%    413   95%    468   98%    512   99%    539 100%    553 (longest request) 

Kết quả của tôi hội tụ khoảng 300 yêu cầu / giây. WEBrick không được biết đến với tốc độ. Tiếp tục và ngắt server bằng Ctrl-c.

Thin là một web server ruby phổ biến sử dụng Mongrel để phân tích cú pháp và EventMachine cho IO không chặn. Cài đặt Thin và chạy lại server . Sinatra sẽ tự động tải Thin và cho bạn biết (“… với bản backup từ Thin”).

gem install thin ruby app.rb 

Bây giờ, hãy thử kiểm tra tải . Lần này sẽ nhanh hơn một chút.

Lưu ý : Thin dường như không cho phép kết nối ApacheBench thông qua localhost, nhưng nó cho phép 0.0.0.0 hoặc 127.0.0.1.

ab -n 1000 -c 100 http://0.0.0.0:4567/  ... Concurrency Level:      100 Time taken for tests:   0.989 seconds Complete requests:      1000 Failed requests:        0 Write errors:           0 Total transferred:      244000 bytes HTML transferred:       11000 bytes Requests per second:    1011.13 [#/sec] (mean) Time per request:       98.899 [ms] (mean) Time per request:       0.989 [ms] (mean, across all concurrent requests) Transfer rate:          240.93 [Kbytes/sec] received ... 

Ít nhất trong trường hợp này, có vẻ như Thin tạo ra một server nhanh hơn đáng kể so với WEBrick với hơn 1000 yêu cầu / giây (Bạn có thể thử nâng tổng số yêu cầu, nhưng nó không cao hơn đối với tôi). Không tệ.

Kết luận


Rõ ràng, những kết quả này không phản ánh hiệu suất server thực tế. HTTP chỉ là một phần của câu đố. Một công cụ tạo khuôn mẫu và / hoặc database chậm sẽ kéo những con số này xuống đáng kể. Tuy nhiên, nó cung cấp cho bạn một con số nhanh về sân bóng để so sánh.

Các công cụ hiệu suất khác mà bạn có thể quan tâm:

<div class = “author”> Gửi bởi: <a href=osystemhttp://robertqualls.com[> Robert Qualls </a> </div>


Tags:

Các tin liên quan

Cách thiết lập server VPN đa giao thức bằng SoftEther
2013-11-19
Cách thiết lập server e-mail Postfix với Dovecot
2013-11-14
Cách thiết lập WordPress với W3 Total Cache trên Lighttpd Server
2013-11-12
Thiết lập server ban đầu với Debian 7
2013-11-04
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Debian 7
2013-10-31
Cách sử dụng Tìm và Định vị để Tìm kiếm Tệp trên VPS Linux
2013-09-27
10 Trứng Phục sinh hàng đầu trên Linux
2013-09-18
Cách sử dụng SSH để kết nối với server từ xa trong Ubuntu
2013-09-10
Cách sử dụng ps, kill và hay để quản lý các tiến trình trong Linux
2013-09-06
Cách xem người dùng hệ thống trong Linux trên Ubuntu
2013-09-05