Cách sử dụng ApacheBench để thực hiện kiểm tra tải trên VPS Ubuntu 13.10
Kiểm tra tải là một ý tưởng hay trước khi triển khai. 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 Ubuntu 13.10 x32 mới. Kết quả thu được từ một server 512 MB.
Cài đặt
Làm mới database gói.
apt-get update
Cài đặt gói apache2-utils để có quyền truy cập vào ApacheBench.
apt-get install apache2-utils
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 -s /bin/bash -g sudo test
Lệnh này thực hiện được những gì:
useradd - tạo user mới
-m - tạo folder chính
-d / home / test - đặt folder chính của user thành / home / test
-s / bin / bash - đặt bash shell mặc định của user (Ubuntu sử dụng dấu gạch ngang theo mặc định)
-g sudo - thêm user vào group sudo (để chạy các lệnh với sudo)
kiểm tra - tên của user mới
Đặt password cho user mới.
passwd 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
Nếu bạn muốn, bạn có thể đặt nó vào .bashrc của bạn để rvm có sẵn bất kỳ lúc nào bạn đăng nhập với quyền user .
echo "source ~/.rvm/scripts/rvm" >> ~./bashrc
Bạn có thể xác minh tập lệnh rvm đang được sử dụng bằng cách kiểm tra phần đầu của loại. Nó phải là một hàm và không phải băm.
type rvm | head -1 rvm is a function
Tiếp theo, cài đặt Ruby 2.0.0. RVM sẽ yêu cầu password của user vì nó cần cài đặt một loạt các phụ thuộc trước khi có thể tạo Ruby. Vì RVM xây dựng Ruby từ nguồn, nên 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 ~ vim 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: localhost Server Port: 4567 Document Path: / Document Length: 11 bytes Concurrency Level: 100 Time taken for tests: 3.410 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 288000 bytes HTML transferred: 11000 bytes Requests per second: 293.23 [#/sec] (mean) Time per request: 341.034 [ms] (mean) Time per request: 3.410 [ms] (mean, across all concurrent requests) Transfer rate: 82.47 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 2.0 0 11 Processing: 185 332 90.3 311 578 Waiting: 28 280 83.2 267 574 Total: 193 333 89.7 311 578 Percentage of the requests served within a certain time (ms) 50% 311 66% 357 75% 423 80% 446 90% 467 95% 480 98% 490 99% 501 100% 578 (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.
Cài đặt mỏng
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.
Server Software: thin Server Hostname: localhost Server Port: 4567 Document Path: / Document Length: 11 bytes Concurrency Level: 100 Time taken for tests: 1.339 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 244000 bytes HTML transferred: 11000 bytes Requests per second: 747.00 [#/sec] (mean) Time per request: 133.870 [ms] (mean) Time per request: 1.339 [ms] (mean, across all concurrent requests) Transfer rate: 178.00 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.8 0 8 Processing: 55 128 19.9 132 155 Waiting: 42 116 19.7 121 144 Total: 62 129 18.5 132 156 Percentage of the requests served within a certain time (ms) 50% 132 66% 135 75% 137 80% 139 90% 144 95% 149 98% 152 99% 155 100% 156 (longest request)
Í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 700 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).
Lưu ý : Tôi có thể nhận được 1000 yêu cầu / giây trên một server Arch Linux.
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 cài đặt control panel Ajenti trên Ubuntu 13.042013-11-12
Cách thiết lập và cài đặt Django CMS trên VPS Debian 7 hoặc Ubuntu 13
2013-11-12
Cách cài đặt Dropplets trên Ubuntu 13.04 NGINX VPS
2013-10-25
Cách sử dụng HAProxy để thiết lập cân bằng tải HTTP trên VPS Ubuntu
2013-09-26
Cách tạo Omega 4 Drupal Subtheme trên Ubuntu VPS
2013-09-26
Cách sử dụng tính năng trùng lặp với GPG để tự động hóa an toàn các bản backup trên Ubuntu
2013-09-19
Cách cấu hình một cụm đa node với Cassandra trên VPS Ubuntu
2013-09-11
Cách theo dõi log xác thực hệ thống trên Ubuntu
2013-09-05
Cách bắt đầu với Jekyll trên VPS Ubuntu
2013-08-28
Cách sử dụng Dig, Whois và Ping trên Ubuntu VPS để truy vấn dữ liệu DNS
2013-08-23