- vừa được xem lúc

[Phần 2] [Performance hệ thống] Giảm độ trễ của network và của việc truy cập memory

0 0 27

Người đăng: Ngô Tuấn Trường

Theo Viblo Asia

Độ trễ mạng

Cách tối ưu độ trễ của mạng (chúng ta đang xét mô hình client-server):

  • Sử dụng kết nối persistent.
  • Giảm dung lượng data truyền qua mạng

Sử dụng kết nối persistent


Hình ảnh tham khảo trên internet

Trong hình minh họa trên, chúng ta thấy với kết nốt non-persistent sẽ tốn thời gian nhiều hơn do phải thiết lập lại connection. Vậy chúng ta nên chọn persistent connection đối với các giao thức mạng.

Chúng ta xem xét hệ thống của chúng ta đang sử dụng giao thức mạng nào?

  • Http1.0 sử dụng non-persistent connection;
  • Http1.1, Http2.0 và Http/3 sử dụng persistent connection;

Nên ưu tiên chon Http2.0 hoặc Http/3 vì nó cho tốc độ tải nhanh hơn Http1.0 và Http1.1

  • Nếu là server giao tiếp với server, chúng ta nên sử dụng Http2.0 (thường dùng gRPC) hay sử dụng Message broken (ví dụ RabbitMQ sử dụng giao thức AMQP ) .

Giảm dung lượng data truyền qua mạng

  • Chúng ta sử dụng kỹ thuật caching phía trình duyệt để cache lại các file script, json,... nhằm tăng tốc cho những lần truy cập sau;
  • Chúng ta cần BundlingMinification các file script trước khi gửi về client;
  • Nén dữ liệu trước khi gửi qua mạng.

Giảm độ trễ của việc truy cập memory

Chúng ta cần làm những việc sau:

  • Tránh làm phình bộ nhớ
    • Giữ cho phần code base càng nhỏ càng tốt. Vì khi chạy chương trình phần code base cũng được nạp vào memory. Tuy nhiên ứng dụng của chúng ta phụ thuộc vào framework vậy nên chúng ta khó control độ lớn của code base. Nhưng ở đây mình có một số gợi ý là hãy làm tốt khâu thiết kế kiến trúc và code theo design pattern (nếu đang sử dụng hướng đối tượng).
    • Chúng ta tránh khai báo đối tượng khi không cần thiết để tránh phình Head Memory.
    • Sử dụng tốt pattern dispose, để hủy resource khi không sử dụng.
    • Tránh sử dụng các thư viện ngốn nhiều memory ví dụ khi xử lý excel thì close xml ngốn nhiều memory hơn là aspose.
  • Sử dụng Weak Reference cho các đối tượng lớn
  • Chia nhỏ một process lớn thành nhiều process nhỏ.
  • Đối với database thì cần chuẩn hóa (normalize) để câu query được tối ưu hơn, vì ít join hơn nên bộ nhớ sử dụng dưới database cũng ít hơn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tăng tốc database phần 13 Index Merge

Đã lâu không quay lại chủ đề này, vì trước mấy ku em bảo mình viết hàn lâm khó hiểu quá nên mình chuyển qua dạng vấn đáp xem có dễ hiểu hơn chút nào không? Các bạn có góp ý vui lòng comment nhé. Chuyệ

0 0 20

- vừa được xem lúc

Tăng tốc database phần 15.3 Indexing NULL trong Oracle - Giả lập Partial Indexes trong Oracle

Các bạn có thể xem bài trước tại đây. Với tính chất không index NULL của Oracle, có thể giả lập partial index bằng cách tạo một hàm trả về NULL cho những bản ghi không cần index.

0 0 21

- vừa được xem lúc

[Phần 1] Performance có nghĩa là gì?

Performance có nghĩa là gì. . . .

0 0 26