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>
Các tin liên quan
Cách thiết lập server VPN đa giao thức bằng SoftEther2013-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