Latency là một yếu tố quan trọng ảnh hưởng đến hiệu suất và trải nghiệm người dùng khi sử dụng các dịch vụ trực tuyến. Latency có thể xuất phát từ nhiều nguyên nhân khác nhau trong môi trường mạng, bao gồm phần cứng và cấu hình mạng. Vậy Latency là gì? Tại sao lại xuất hiện độ trễ? Hãy cùng tôi khám phá ngay trong bài viết này!
Latency là gì?
Latency hay độ trễ là khoảng thời gian cần thiết để truyền một gói dữ liệu từ khi gửi yêu cầu (request) đến khi nhận phản hồi (response). Độ trễ phản ánh tốc độ phản hồi của hệ thống và ảnh hưởng trực tiếp đến trải nghiệm của người dùng khi truy cập các dịch vụ trực tuyến. Độ trễ càng thấp, dữ liệu càng được truyền tải nhanh chóng, mang đến cho người dùng cảm giác trải nghiệm mượt mà và tức thời.
Thông thường, độ trễ được đo từ thiết bị của người dùng đến trung tâm dữ liệu. Phép đo này giúp các nhà phát triển hiểu rõ tốc độ tải của trang web hoặc ứng dụng đối với người dùng.
Ví dụ: Khi bạn đang chơi một trò chơi, độ trễ từ máy tính của bạn đến máy chủ sẽ quyết định tốc độ phản hồi của các hành động trong game. Nếu độ trễ cao, hình ảnh có thể bị giật lác hoặc các thao tác bị delay. Để giảm độ trễ trong trường hợp này, bạn có thể chọn máy chủ game ở gần, nâng cấp gói internet, hoặc tối ưu cấu hình máy tính.
Nguyên nhân gây ra Latency
Latency có thể xuất phát từ nhiều nguồn khác nhau trong mạng Internet, bao gồm phần cứng, phần mềm, cấu trúc hệ thống và cả vị trí địa lý của người dùng. Các yếu tố này đều có thể góp phần làm gia tăng độ trễ của kết nối.
Độ trễ đường truyền
Khoảng cách giữa các thiết bị khách gửi yêu cầu và máy chủ xử lý yêu cầu có thể ảnh hưởng đến độ trễ. Nếu một trang web được lưu trữ trong trung tâm dữ liệu ở Hồ Chí Minh, nó có thể phản hồi khá nhanh với yêu cầu từ người dùng ở Hồ Chí Minh, khả năng chỉ trong 5-10 mili giây. Bên cạnh đó, người dùng ở Hà Nội (khoảng 1,600 km) sẽ mất thời gian phản hồi lâu hơn, gần 20 mili giây.
Mặc dù việc tăng thêm vài mili giây có vẻ không đáng kể, nhưng khi kết hợp với tất cả các giao tiếp back-and-forth cần thiết để thiết lập kết nối giữa client và server. Chẳng hạn, như tổng kích thước và thời gian tải của trang cũng như bất kỳ sự cố nào với thiết bị mạng mà dữ liệu được truyền qua đường đi. Khoảng thời gian cần thiết để phản hồi đến thiết bị khách sau khi có yêu cầu của khách được biết là thời gian khứ hồi (round-trip time).
Dữ liệu truyền qua Internet không chỉ đi qua một, mà phải đi qua nhiều mạng khác nhau. Càng nhiều mạng mà phản hồi HTTP cần đi qua càng nhiều, khả năng xảy ra độ trễ càng cao. Khi gói dữ liệu đi qua các mạng, chúng sẽ đi qua Internet Exchange Points (IXP). Ở đó, các router phải xử lý và định tuyến các gói dữ liệu. Và đôi khi các router có thể cần chia chúng thành các gói nhỏ hơn, việc xử lý các gói nãy sẽ thêm vài mili giây vào RTT.
Độ trễ xử lý
Trên đường truyền, các thiết bị mạng và thiết bị tham gia xử lý tín hiệu (bao gồm cả server web) đều có tác động nhất định lên dữ liệu.
- Đối với các thiết bị mạng: Các quá trình biến đổi tín hiệu giữa quang – điện – sóng vô tuyến hay các bộ lọc lưu lượng, tường lửa, xử lý định tuyến,… đều đòi hỏi các chip xử lý trên thiết bị mạng làm việc với tín hiệu và đôi khi cả dữ liệu bên trong. xét đến cấu hình của các thiết bị này thường không phải quá mạnh, chúng sẽ mất một khoảng thời gian tổng đáng kể để xử lý tín hiệu trên đường truyền.
- Đối với máy chủ web: Tương tự các thiết bị mạng, các máy chủ web dù mạnh đến đâu cũng vẫn sẽ có độ trễ khi phải xử lý lượng lớn yêu cầu. Ví dụ rõ nhất là những trường hợp các website bị quá tải do lượng truy cập tăng đột biến khiến tốc độ phản hồi của server bị chậm đi rất nhiều.
Cách tính Latency
Để tính Latency, bạn cần gửi một gói tin từ một thiết bị đến một thiết bị khác và đo thời gian giữa khi gửi gói tin và khi nhận được phản hồi từ thiết bị đó. Có nhiều cách để đo Latency, dưới đây là một số phương pháp đơn giản:
Ping
ping là một công cụ được sử dụng để kiểm tra kết nối mạng và đo thời gian giữa khi gửi gói tin và khi nhận được phản hồi. Bạn có thể mở cửa sổ dòng lệnh và nhập lệnh “ping [địa chỉ IP của thiết bị đích]” để đo Latency. Kết quả trả về sẽ hiển thị thời gian giữa khi gửi gói tin và khi nhận được phản hồi.
Round Trip Time (RTT)
RTT là một thông số phổ biến để đo độ trễ, tính bằng tổng thời gian mà một gói dữ liệu cần để đi từ nguồn đến đích và quay trở lại (còn được gọi là “thời gian khứ hồi”). Phương pháp đánh giá này có một vài nhược điểm vì nó có thể không đưa ra một bức tranh rõ ràng về nguyên nhân gây độ trễ trong các trường hợp đường đi của dữ liệu trả về khác nhau.
Time To First Byte(TTFB)
TTFB (thời gian đến byte dữ liệu đầu tiên) là một số liệu khác để tính toán độ trễ. Thông số này được tính bằng cách ghi lại sự khác biệt về thời gian từ thời điểm gói dữ liệu rời khỏi một điểm trên mạng đến thời điểm nó đến đích.
Khi đo Latency, bạn cần đảm bảo rằng các thiết bị trên mạng đang hoạt động bình thường và không gặp vấn đề kết nối mạng. Ngoài ra, bạn cần đo Latency từ nhiều điểm khác nhau trên mạng để đánh giá chất lượng kết nối toàn diện của hệ thống.
Latency bao nhiêu là tốt
Latency tốt là latency có giá trị thấp, tức là thời gian trễ giữa khi gửi gói tin và khi nhận được phản hồi là thấp. Tuy nhiên, giá trị cụ thể của latency tốt phụ thuộc vào ứng dụng và mục đích sử dụng của hệ thống. Ví dụ, trong các ứng dụng như trò chơi trực tuyến, video chat, hay các ứng dụng thời gian thực, latency tốt thường phải thấp dưới 100ms. Trong khi đó, trong các ứng dụng như truyền tải dữ liệu lớn, thời gian trễ có thể cao hơn một chút, từ 100ms đến 500ms.
Cần lưu ý rằng latency tốt không chỉ phụ thuộc vào giá trị latency mà còn phụ thuộc vào tính ổn định và độ tin cậy của kết nối mạng. Một kết nối mạng với latency tốt nhưng không ổn định hay không tin cậy cũng có thể gây ra sự cố và ảnh hưởng đến trải nghiệm của người dùng.
Cách khắc phục Latency
Từ phía server
Sử dụng CDN (content delivery network) là một bước quan trọng để giảm latency. CDN lưu trữ nội dung tĩnh để giảm đáng kể RTT. CDN servers được phân phối ở nhiều vị trí để nội dung được lưu trữ gần hơn với những user cuối. Đồng thời cũng không cần phải di chuyển xa để tiếp cận họ. Điều này có nghĩa là tải một trang web sẽ mất ít thời gian hơn, từ đó cải thiện tốc độ và hiệu suất của trang web.
Các nhà phát triển web cũng có thể giảm thiểu số lượng tài nguyên render-blocking (ví dụ: tải JavaScript last). Tối ưu hóa hình ảnh để tải nhanh hơn và giảm kích thước file nếu có thể. Rút gọn mã (code minification) là một cách để giảm kích thước của các file JavaScript và CSS.
Ngoài ra, latency cũng có thể được giảm bằng cách sắp xếp asset sẽ được load trước. Một trang web có thể được cấu hình sẵn để tải khu vực above-the-fold của trang trước để user có thể bắt đầu tương tác với trang ngay cả trước khi nó tải xong (above-the-fold đề cập đến những gì xuất hiện trong cửa sổ trình duyệt browser window trước khi user ẩn xuống).
Các trang web cũng có thể chỉ tải nội dung khi cần thiết, sử dụng một kỹ thuật được gọi là tải chậm (lazy loading). Những cách tiếp cận này không thực sự cải thiện latency của mạng, nhưng chúng cải thiện nhận thức của user về tốc độ trang.
Từ phía người dùng
Đôi khi, latency là do sự cố từ phía user chứ không phải phía server. Khách hàng luôn có tùy chọn mua thêm bandwidth nếu latency là một vấn đề quan tâm. Mặc dù bandwidth không đảm bảo cho hiệu suất của trang web. Chuyển sang Ethernet thay vì WiFi thì kết nối internet sẽ ổn định hơn. User cũng nên đảm bảo thiết bị internet của họ được cập nhật bằng cách nâng cấp các bản cập nhật thường xuyên hoặc thay thế toàn bộ thiết bị khi cần thiết.
IOPS hay Latency quyết định hiệu năng hệ thống lưu trữ?
Cả IOPS và Latency đều quyết định hiệu năng của hệ thống lưu trữ, tuy nhiên chúng có vai trò khác nhau.
IOPS (Input/Output Operations Per Second) là đại lượng đo tốc độ xử lý các hoạt động vào/ra trên hệ thống lưu trữ. IOPS càng cao thì hệ thống lưu trữ có khả năng xử lý các yêu cầu vào/ra càng nhanh. Đây là yếu tố quan trọng để đáp ứng nhu cầu sử dụng các ứng dụng đòi hỏi tốc độ xử lý dữ liệu cao như cơ sở dữ liệu, máy chủ ảo, hay các ứng dụng liên quan đến video, âm thanh.
Tuy nhiên, Latency là thời gian mà hệ thống lưu trữ phản hồi các yêu cầu vào/ra. Thời gian này được tính từ khi yêu cầu được gửi đến tới khi hệ thống lưu trữ trả về kết quả. Latency càng thấp thì hệ thống lưu trữ có khả năng xử lý các yêu cầu vào/ra càng nhanh. Tuy nhiên, độ trễ của hệ thống lưu trữ phụ thuộc vào nhiều yếu tố như loại ổ đĩa, thiết lập RAID, cấu hình mạng,…
Vì vậy, khi đánh giá hiệu năng của hệ thống lưu trữ, cả IOPS và Latency đều cần được xem xét để đảm bảo rằng hệ thống đáp ứng được nhu cầu sử dụng và đảm bảo hoạt động ổn định.
Lời kết
Tóm lại, latency là một yếu tố quan trọng ảnh hưởng đến hiệu suất của hệ thống. Để đảm bảo hệ thống hoạt động ổn định và đáp ứng được nhu cầu sử dụng, việc giảm độ trễ của hệ thống là rất quan trọng. Một số nguyên nhân gây ra độ trễ của hệ thống có thể khắc phục từ phía máy chủ hoặc từ phía người dùng, tùy vào từng trường hợp cụ thể. Tuy nhiên, để đánh giá hiệu năng của hệ thống lưu trữ, cả IOPS( Input/Output Operations Per Second) và latency đều cần được xem xét để đảm bảo rằng hệ thống đáp ứng được nhu cầu sử dụng và hoạt động ổn định.