<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Khánh Văn</title>
    <description>The latest articles on DEV Community by Khánh Văn (@khnh_vn_7219090922b40e5).</description>
    <link>https://dev.to/khnh_vn_7219090922b40e5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4242991%2Ffe46cd7e-2fab-48cd-9820-fc58082fb3b0.jpg</url>
      <title>DEV Community: Khánh Văn</title>
      <link>https://dev.to/khnh_vn_7219090922b40e5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khnh_vn_7219090922b40e5"/>
    <language>en</language>
    <item>
      <title>Thiết Kế Bộ Luật Khớp Từ Khóa Và Hàng Đợi Giãn Cách Cho Hệ Thống Chatbot CSKH Đa Kênh</title>
      <dc:creator>Khánh Văn</dc:creator>
      <pubDate>Fri, 13 Nov 2026 13:13:09 +0000</pubDate>
      <link>https://dev.to/khnh_vn_7219090922b40e5/thiet-ke-bo-luat-khop-tu-khoa-va-hang-doi-gian-cach-cho-he-thong-chatbot-cskh-da-kenh-1d66</link>
      <guid>https://dev.to/khnh_vn_7219090922b40e5/thiet-ke-bo-luat-khop-tu-khoa-va-hang-doi-gian-cach-cho-he-thong-chatbot-cskh-da-kenh-1d66</guid>
      <description>&lt;p&gt;Khi xây dựng luồng phản hồi tự động cho các kênh nhắn tin thương mại như Zalo hay Telegram, hai bài toán kỹ thuật quan trọng nhất quyết định trải nghiệm người dùng cuối là &lt;strong&gt;độ chính xác khi so khớp ý định từ khóa (Keyword Matching)&lt;/strong&gt; và &lt;strong&gt;nhịp độ điều tiết hàng đợi tin nhắn đi (Rate-Limited Message Queue)&lt;/strong&gt;. Nếu thiết kế bộ lọc quá lỏng lẻo, bot dễ trả lời nhầm ngữ cảnh; ngược lại nếu gửi thông báo chiến dịch dồn dập không có bộ đệm trễ, hệ thống rất dễ chạm ngưỡng giới hạn tần suất.&lt;/p&gt;

&lt;p&gt;Bài viết này trình bày mô hình thiết kế gọn nhẹ, hiệu quả mà bất kỳ đội ngũ phát triển hoặc vận hành thương mại điện tử nào cũng có thể áp dụng.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Chuẩn hóa văn bản tiếng Việt trước khi so khớp từ khóa
&lt;/h2&gt;

&lt;p&gt;Trong hội thoại mua hàng thực tế, khách hàng hiếm khi gõ đầy đủ dấu câu chuẩn mực. Cùng một câu hỏi về chi phí vận chuyển, người dùng có thể nhắn &lt;em&gt;"phí ship sao shop"&lt;/em&gt;, &lt;em&gt;"phi giao hang bao nhieu"&lt;/em&gt; hoặc viết tắt &lt;em&gt;"ship bn"&lt;/em&gt;. Do đó, tầng tiền xử lý chuỗi cần chuẩn hóa về chữ thường, loại bỏ ký tự đặc biệt thừa và hỗ trợ song song cả dạng có dấu lẫn không dấu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;unicodedata&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;normalize_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;strip_accents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cleaned&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;cleaned&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;"[^\w\s]"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cleaned&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;cleaned&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;"\s+"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cleaned&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;strip_accents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;cleaned&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;unicodedata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"NFD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cleaned&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;unicodedata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;category&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s2"&gt;"Mn"&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"đ"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"d"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;cleaned&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thay vì khớp chuỗi con đơn thuần (&lt;code&gt;substring in text&lt;/code&gt;) dễ gây kích hoạt nhầm trên các từ ngắn, hãy ưu tiên khớp theo &lt;strong&gt;ranh giới từ nguyên vẹn (&lt;code&gt;\bkeyword\b&lt;/code&gt;)&lt;/strong&gt; kết hợp thứ tự ưu tiên từ cụm từ cụ thể dài hơn xuống từ khóa đơn ngắn hơn.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Cấu trúc dữ liệu cho một Luật Phản Hồi (Auto-Reply Rule)
&lt;/h2&gt;

&lt;p&gt;Một quy tắc phản hồi thực chiến dùng cho bán lẻ thường bao gồm danh sách cụm từ kích hoạt, nội dung trả lời, tệp ảnh đính kèm (bảng màu, bảng giá) và thời gian chờ chống lặp (&lt;code&gt;cooldown_seconds&lt;/code&gt;) trên từng cuộc hội thoại để tránh việc khách nhắn 3 câu liên tiếp bị bot gửi lặp lại cùng một tấm ảnh 3 lần:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"rule_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"pricing_catalog"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"bảng giá"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"bao nhiêu"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"báo giá"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"cooldown_seconds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"reply_text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Dạ shop gửi mình bảng giá và bảng màu chi tiết bên dưới ạ!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"media_attachments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"catalog_2026.webp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Đối với các chủ cửa hàng muốn triển khai ngay mô hình luật từ khóa kèm thống kê lượt phản hồi và kết nối nhanh qua mã QR trên trình duyệt mà không cần tự dựng máy chủ riêng, có thể khởi tạo trực tiếp không gian làm việc trên &lt;a href="https://redzalo.net/sign-up" rel="noopener noreferrer"&gt;nền tảng RedZalo&lt;/a&gt; chỉ trong vài phút thiết lập.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Cơ chế Hàng Đợi Giãn Cách (Paced Campaign Queue) khi gửi tin nhóm
&lt;/h2&gt;

&lt;p&gt;Khi cần gửi thông báo khuyến mãi cuối tuần tới danh sách 20–30 nhóm cộng đồng đang quản lý, việc bắn đồng loạt toàn bộ yêu cầu song song trong 1 giây là phản mẫu (anti-pattern) cần tránh. Thay vào đó, mô hình Worker tuần tự kèm độ trễ ngẫu nhiên nhẹ (&lt;code&gt;jitter&lt;/code&gt;) giúp luồng phân phối ổn định và tự nhiên hơn rất nhiều:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;compute_next_delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_seconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;6.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;jitter_ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;spread&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base_seconds&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;jitter_ratio&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_seconds&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uniform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;spread&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;spread&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Theo dõi chỉ số vận hành để tinh chỉnh kịch bản hàng tuần
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Một bộ luật tự động tốt không đứng yên mãi mãi, mà tiến hóa liên tục dựa trên những từ khóa thực tế khách hàng nhắn vào mỗi ngày.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hãy lưu lại hai chỉ số đơn giản trên bảng điều khiển hàng ngày:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Top luật được kích hoạt nhiều nhất&lt;/strong&gt;: Cho biết nhóm thông tin nào khách đang quan tâm nhất (giá bán, tồn kho hay chính sách đổi trả).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Danh sách câu hỏi đầu tiên chưa khớp luật nào&lt;/strong&gt;: Đây chính là mỏ vàng dữ liệu để bạn bổ sung thêm 2–3 quy tắc mới mỗi tuần, nâng dần tỷ lệ phản hồi tự động chính xác ngoài giờ hành chính lên trên 85%.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>automation</category>
      <category>chatbot</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Checklist Thiết Lập Bảo Mật Và Tối Ưu Hiệu Năng Cho Cloud VPS Ubuntu 24.04 Mới Khởi Tạo</title>
      <dc:creator>Khánh Văn</dc:creator>
      <pubDate>Fri, 13 Nov 2026 13:11:25 +0000</pubDate>
      <link>https://dev.to/khnh_vn_7219090922b40e5/checklist-thiet-lap-bao-mat-va-toi-uu-hieu-nang-cho-cloud-vps-ubuntu-2404-moi-khoi-tao-8jk</link>
      <guid>https://dev.to/khnh_vn_7219090922b40e5/checklist-thiet-lap-bao-mat-va-toi-uu-hieu-nang-cho-cloud-vps-ubuntu-2404-moi-khoi-tao-8jk</guid>
      <description>&lt;p&gt;Ngay sau khi nhận thông tin đăng nhập SSH của một máy chủ Linux mới, nhiều lập trình viên thường bắt tay vào cài đặt ngay Nginx, Docker hoặc cơ sở dữ liệu mà bỏ qua bước gia cố bảo mật và tinh chỉnh bộ nhớ hạt nhân cơ bản. Chỉ mất chưa đầy 10 phút thực hiện theo 4 bước dưới đây, máy chủ của bạn sẽ chịu tải ổn định hơn hẳn và ngăn chặn hiệu quả các cuộc dò quét mật khẩu tự động trên Internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Cấu hình tường lửa UFW tối giản theo nguyên tắc Least Privilege
&lt;/h2&gt;

&lt;p&gt;Nguyên tắc an toàn đầu tiên khi triển khai một &lt;a href="https://dichvudark.vip/services/vps" rel="noopener noreferrer"&gt;máy chủ ảo riêng biệt cho ứng dụng web&lt;/a&gt; là đóng toàn bộ các cổng kết nối đến mặc định và chỉ mở duy nhất các cổng dịch vụ bắt buộc (&lt;code&gt;22&lt;/code&gt; cho SSH, &lt;code&gt;80&lt;/code&gt; cho HTTP và &lt;code&gt;443&lt;/code&gt; cho HTTPS):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force &lt;span class="nb"&gt;enable&lt;/span&gt;
sudo ufw status verbose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu ứng dụng Node.js, Python (FastAPI/Gunicorn) hoặc Go của bạn đang lắng nghe ở cổng nội bộ như &lt;code&gt;3000&lt;/code&gt; hay &lt;code&gt;8080&lt;/code&gt;, tuyệt đối không mở cổng này ra ngoài Internet mà chỉ bind vào &lt;code&gt;127.0.0.1&lt;/code&gt; và đặt phía sau Nginx Reverse Proxy.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Khởi tạo bộ nhớ Swap và tinh chỉnh &lt;code&gt;vm.swappiness&lt;/code&gt; cho ổ cứng NVMe
&lt;/h2&gt;

&lt;p&gt;Trên các gói Cloud VPS có dung lượng RAM từ 2GB đến 4GB, một đợt tăng đột biến tiến trình build mã nguồn hoặc truy vấn MySQL phức tạp rất dễ kích hoạt cơ chế &lt;code&gt;OOM Killer&lt;/code&gt; làm ngắt dịch vụ cơ sở dữ liệu. Thiết lập tệp Swap 2GB–4GB kèm chỉ số &lt;code&gt;swappiness=10&lt;/code&gt; giúp hệ thống ưu tiên tối đa tốc độ RAM vật lý nhưng vẫn có vùng đệm an toàn khi cần:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'/swapfile none swap sw 0 0'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; sudo tee -a /etc/fstab

&lt;span class="c"&gt;# Chỉ dùng Swap khi RAM thực sử dụng vượt ~90%&lt;/span&gt;
sudo sysctl vm.swappiness=10
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'vm.swappiness=10'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; sudo tee -a /etc/sysctl.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Kích hoạt thuật toán chống tắc nghẽn mạng TCP BBR
&lt;/h2&gt;

&lt;p&gt;Từ nhân Linux 4.9 trở lên (mặc định có sẵn trên Ubuntu 22.04 và 24.04), thuật toán &lt;strong&gt;TCP BBR&lt;/strong&gt; do đội ngũ kỹ sư mạng phát triển giúp cải thiện đáng kể thông lượng truyền tải dữ liệu và giảm độ trễ phản hồi HTTPS cho người dùng truy cập qua mạng di động 4G/5G:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cat &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF &lt;span class="o"&gt;|&lt;/span&gt; sudo tee -a /etc/sysctl.conf
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF
sudo sysctl -p
sysctl net.ipv4.tcp_congestion_control
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Khi kết quả dòng cuối trả về &lt;code&gt;net.ipv4.tcp_congestion_control = bbr&lt;/code&gt;, luồng truyền tải gói tin TCP trên máy chủ đã sẵn sàng đạt hiệu suất tối ưu.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Tối ưu cấu hình Worker &amp;amp; Gzip cơ bản trên Nginx
&lt;/h2&gt;

&lt;p&gt;Sau khi cài đặt Nginx làm tầng đón truy cập đầu tiên, hãy đảm bảo tính năng nén văn bản và giữ kết nối (&lt;code&gt;keepalive&lt;/code&gt;) đã được bật cho các định dạng JSON API, CSS và JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="n"&gt;worker_processes&lt;/span&gt; &lt;span class="n"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;events&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;worker_connections&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;multi_accept&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;sendfile&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;tcp_nopush&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;keepalive_timeout&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;server_tokens&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;gzip&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;gzip_comp_level&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;gzip_min_length&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;gzip_types&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;javascript&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;css&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;plain&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Lưu ý cuối cùng: Đừng quên bật dịch vụ &lt;code&gt;unattended-upgrades&lt;/code&gt; và kiểm tra nhật ký hệ thống định kỳ bằng &lt;code&gt;journalctl -p 3 -xb&lt;/code&gt; để phát hiện sớm mọi cảnh báo cấp độ phần dịch vụ nền trước khi ảnh hưởng tới người dùng cuối.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Áp dụng nhất quán bốn bước chuẩn hóa trên mỗi khi khởi tạo máy chủ mới sẽ giúp hạ tầng ứng dụng web vận hành êm ái, bảo mật và tiết kiệm tài nguyên suốt vòng đời dự án.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>linux</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
