Trang này được dịch bằng máy. Đọc bản gốc tiếng Anh. English

OLTP-EMUL là bài kiểm tra Firebird chính thức mô phỏng khối lượng công việc OLTP thực tế trên Firebird 2.5 trở lên. Sử dụng nó để kiểm tra hiệu suất và hồi quy dưới nhiều phiên ISQL đồng thời. Hãy đọc kỹ hướng dẫn này trước khi chạy bài kiểm tra.

Clone kho lưu trữ

Windows

git clone --config core.autocrlf=true https://github.com/FirebirdSQL/oltp-emul

Linux / POSIX

git clone --config core.autocrlf=false https://github.com/FirebirdSQL/oltp-emul

Khởi động nhanh dựa trên công trình của Pavel Zotov (Moscow). Câu hỏi về bài kiểm tra: [email protected]. Hỗ trợ IBSurgeon: [email protected].

1. Điều kiện tiên quyết

Trên máy chủ sẽ chạy các phiên ISQL, hãy cài đặt máy khách Firebird và đảm bảo các tệp nhị phân này có sẵn:

  • isql (trên một số gói POSIX: isql-fb)
  • fbsvcmgr

2. Chọn và sao chép tệp cấu hình

Trong thư mục src, chọn cấu hình mặc định phù hợp với phiên bản Firebird chính và hệ điều hành của bạn, sau đó sao chép nó mà không có hậu tố .default.

Firebird Hệ điều hành Tệp cấu hình
2.5Windowsoltp25_config.win.default
2.5Linuxoltp25_config.nix.default
3.0Windowsoltp30_config.win.default
3.0Linuxoltp30_config.nix.default
4.0Windowsoltp40_config.win.default
4.0Linuxoltp40_config.nix.default
# Windows
copy .\oltp30_config.win.default .\oltp30_config.win

Linux

cp ./oltp30_config.nix.default ./oltp30_config.nix

3. Cài đặt quan trọng

Chỉnh sửa cấu hình đã sao chép. Đặc biệt chú ý đến:

  • fbc - đường dẫn đến isql trên máy khởi chạy phiên
  • clu - tên tệp nhị phân ISQL không chuẩn tùy chọn (ví dụ: isql-fb trên gói POSIX)
  • dbnm - đường dẫn đầy đủ và tên tệp của cơ sở dữ liệu trên máy chủ (chỉ ASCII; không phải bí danh nếu bạn muốn tập lệnh tạo nó)
  • host, port, usr, pwd - tham số kết nối
  • tmpdir - thư mục cho nhật ký ISQL và tệp kiểm tra tạm thời
  • init_docs - tài liệu cần tạo trước khối lượng công việc đo lường (thử 3000-5000 trước)
  • warm_time / test_time - giai đoạn khởi động và đo lường, tính bằng phút
  • sleep_min / sleep_max - tạm dừng giữa các giao dịch (đặt sleep_max thành 0 để tắt tạm dừng)
  • sleep_ddl - UDF tùy chọn cho tạm dừng (ưu tiên hơn sleep / cscript của shell); tệp nhị phân trong util/udf64/
  • wait_for_copy - tạm dừng sau khi khởi tạo để bạn có thể chụp nhanh DB trước khi khởi động/đo lường (hữu ích cho các lần chạy lặp lại)

Sau khi khởi tạo, bài kiểm tra chạy khởi động trong warm_time phút, sau đó đo lường trong test_time phút.

4. Mẹo Windows và firebird.conf

Loại trừ quét chống vi-rút / hệ điều hành khỏi tmpdir và khỏi các thư mục tạm của Firebird (FIREBIRD_TMP / TMP / TEMPTempDirectories trong firebird.conf). Căn chỉnh FIREBIRD_TMP với TempDirectories giảm chậm lại dưới nhiều phiên ISQL.

Tăng ít nhất:

  • DefaultDbCachePages
  • LockHashSlots
  • LockMemSize
  • FileSystemCacheThreshold - phải được đặt rõ ràng và lớn hơn DefaultDbCachePages (bài kiểm tra từ chối giá trị thiếu/được chú thích, ngoại trừ một số bố cục gói POSIX)

Nhắm mục tiêu khoảng 25% RAM cho bộ nhớ đệm trang. Không đặt DefaultDbCachePages trên 2048 cho Classic / SuperClassic. Kích thước trang được mã hóa cứng là 8192.

Ví dụ tải trung bình (~100 phiên):

Tham số SuperServer 3.0+ [Super]Classic 3.0+ [Super]Classic 2.5
DefaultDbCachePages ~0.25 × RAM / 8192 1024 1024
LockHashSlots 8191 16001 16001
LockMemSize 4194304 16777216 16777216

Đối với cấu hình có sẵn, hãy xem Máy tính cấu hìnhcấu hình tham chiếu.

5. Chạy bài kiểm tra

Mở shell, chuyển đến src và chạy:

1run_oltp_emul <FbMajor> <NumSessions> [nostop]
  • FbMajor - 25, 30 hoặc 40 cho Firebird 2.5 / 3.0 / 4.0
  • NumSessions - số phiên ISQL cần khởi chạy
  • nostop - tùy chọn; bỏ qua tạm dừng tương tác (hữu ích từ bộ lập lịch)

Nếu tệp cơ sở dữ liệu không tồn tại và dbnm là đường dẫn đầy đủ (không phải bí danh), tập lệnh có thể tạo nó. Các DB trước đó không đầy đủ hoặc trống được tạo lại khi cần.

6. Báo cáo và dừng

Sau thời gian khởi động + đo lường, các phiên tự động dừng. Phiên ISQL đầu tiên ghi báo cáo cuối cùng trong tmpdir. Với make_html = 1 trên Windows, báo cáo HTML cũng được tạo (chậm hơn).

Đặt tên báo cáo phụ thuộc vào file_name_with_test_params:

  • Được chú thích (mặc định) - ví dụ: oltp**.report.txt
  • regular - tên có dấu thời gian phù hợp để duyệt nhiều lần chạy trong danh sách thư mục
  • benchmark - tên phù hợp để so sánh cài đặt/biến thể DDL

Báo cáo bao gồm kiến trúc và cài đặt, hiệu suất tổng thể và theo khoảng thời gian (CNT_OK_PER_MINUTE / AVG_TIMES_PER_MINUTE), chi tiết giám sát tùy chọn, ngoại lệ, thống kê DB, tỷ lệ phiên bản/bản ghi, xác thực cho các bảng đã sửa đổi và khác biệt firebird.log trước/sau.

Bạn cũng có thể truy vấn:

select * from srv_mon_perf_dynamic;
select * from srv_mon_perf_total;

Dừng sớm

Sử dụng 1stoptest.tmp (.bat / .sh) được tạo trong tmpdir trên mỗi lần khởi chạy. Đối với khởi chạy nhiều máy chủ, bạn có thể bật ExternalFileAccess trong firebird.conf, đặt use_external_to_stop trong cấu hình OLTP và ghi một ký tự vào tệp dừng đó (xóa nó trước mỗi lần chạy mới).

Đường cơ sở lặp lại

Đặt wait_for_copy = 1, để khởi tạo hoàn tất, sao chép DB, sau đó khôi phục bản sao đó trước mỗi lần chạy so sánh để mọi phép đo bắt đầu từ cùng một điểm.

Khối lượng công việc mô hình hóa điều gì

Kịch bản tuân theo tài liệu kinh doanh kiểu dịch vụ ô tô:

  1. Đơn đặt hàng của khách hàng (hoặc nội bộ) cho phụ tùng
  2. Đơn hàng được kết hợp và gửi đến nhà cung cấp
  3. Hóa đơn nhà cung cấp (đầy đủ hoặc một phần)
  4. Nhận hàng tồn kho; phụ tùng đặt theo đơn khách hàng được đặt trước
  5. Bán hàng và ghi giảm tồn kho
  6. Hủy có thể xảy ra ở nhiều bước
  7. Thanh toán một phần/đầy đủ và hủy ảnh hưởng đến số dư
  8. Phiên đầu tiên tạo báo cáo hiệu suất, ngoại lệ, thống kê và xác thực