Khắc phục độ trễ đăng nhập 2 phút trên Ubuntu (Hành trình gỡ lỗi thực tế)

Table of Contents
Tôi đã ngồi nhìn chằm chằm vào màn hình đóng băng trong hai phút sau khi gõ mật khẩu. Mỗi sáng. Suốt ba ngày liên tiếp.
Thông tin chính
Thời gian khởi động và thời gian đăng nhập là hai vấn đề hoàn toàn khác nhau. systemd-analyze đo tốc độ khởi động — không phải những gì xảy ra sau khi bạn gõ mật khẩu.
Đây là phần tiếp theo của bài viết gốc về sự cố chậm đăng nhập Ubuntu của tôi, nơi một vấn đề NVIDIA/Xorg đã gây ra triệu chứng tương tự. Lần này máy không có GPU NVIDIA — nhưng tình trạng đóng băng hai phút tương tự đã quay trở lại. Nguyên nhân gốc rễ khác, cách khắc phục khác.
Bộ công cụ chẩn đoán
Trước khi chạm vào bất cứ thứ gì, hãy thu thập bằng chứng. Đoán mò chỉ tốn thời gian.
Phân tích thời gian khởi động (những gì tải trước màn hình đăng nhập):
systemd-analyze blame | head -20
systemd-analyze critical-chain
systemd-analyze plot > boot.svg
Phân tích phiên người dùng (những gì tải sau khi bạn gõ mật khẩu):
systemd-analyze --user blame | head -20
systemd-analyze --user critical-chain
Quét nhật ký (tìm các sự kiện hết thời gian chờ và lỗi):
# All errors since last boot
journalctl -b -p err
# Everything, with timestamps
journalctl -b --output=short-precise | less
# Filter for common culprits
journalctl -b | grep -iE "timeout|timed out|failed|refused|killed"
Thông tin quan trọng: systemd-analyze blame chỉ hiển thị thời gian khởi động (trước khi đăng nhập). Đối với các trường hợp đóng băng sau khi đăng nhập, bạn cần --user và journalctl -b.
Manh mối đầu tiên: NetworkManager
systemd-analyze blame cho thấy NetworkManager-wait-online.service mất 5,7 giây. Không phải là thủ phạm gây đóng băng khi đăng nhập, nhưng đáng để khắc phục.
NetworkManager-wait-online làm gì
Dịch vụ này chặn chuỗi khởi động cho đến khi kết nối mạng hoàn chỉnh được thiết lập. Trên máy chủ, điều này quan trọng — các dịch vụ systemd như cơ sở dữ liệu cần mạng trước khi khởi động. Trên máy tính để bàn, điều này thường vô nghĩa.
sudo systemctl disable NetworkManager-wait-online.service
Kiểm tra xem nó đã thực sự bị vô hiệu hóa chưa:
systemctl is-enabled NetworkManager-wait-online.service
# Should output: disabled
Khởi động nhanh hơn 5 giây. Tình trạng đóng băng khi đăng nhập không thay đổi.
Tại sao điều này an toàn trên máy tính để bàn: Các ứng dụng máy tính để bàn không phụ thuộc vào việc mạng đã sẵn sàng khi khởi động — chúng tự xử lý. Các dịch vụ duy nhất cần NetworkManager-wait-online thành công là những dịch vụ được After=network-online.target rõ ràng, điều này hiếm khi xảy ra trên máy tính để bàn.
Manh mối thứ hai: Keyring trùng lặp
journalctl -b | grep -iE "failed|error" cho thấy một loạt lỗi chính xác vào thời điểm hai phút sau khi đăng nhập:
Failed to start app-gnome-gnome-keyring-secrets.scope
systemd[1423]: Failed to start gnome-keyring-secrets.scope
cgroup: Failed to create /user.slice/user-1000.slice/session-2.scope/app.slice/app-gnome-keyring
Dấu thời gian rất chính xác: những lỗi này xuất hiện 120 giây sau khi đăng nhập — chính xác bằng thời gian đóng băng.
Hiểu vấn đề
GNOME đang khởi động daemon keyring hai lần — một lần thông qua các dịch vụ người dùng systemd, và một lần nữa thông qua các tệp tự động khởi động .desktop trong /etc/xdg/autostart/. Lần thử thứ hai phát hiện socket đã được sử dụng, bị lỗi và khiến systemd chờ dịch vụ bị lỗi trước khi nó có thể tuyên bố phiên đã sẵn sàng.
Xác nhận trùng lặp
Kiểm tra xem các tệp tự động khởi động có tồn tại không:
ls /etc/xdg/autostart/ | grep keyring
# gnome-keyring-pkcs11.desktop
# gnome-keyring-secrets.desktop
# gnome-keyring-ssh.desktop
Kiểm tra xem dịch vụ người dùng systemd cũng đang hoạt động không:
systemctl --user status gnome-keyring-daemon.service
Nếu cả hai đều có mặt và dịch vụ đang hoạt động, bạn có bản sao trùng lặp.
Cách khắc phục
Chỉ vô hiệu hóa các mục tự động khởi động cho người dùng của bạn (không sửa đổi các tệp toàn hệ thống):
mkdir -p ~/.config/autostart
for f in gnome-keyring-pkcs11.desktop gnome-keyring-secrets.desktop gnome-keyring-ssh.desktop; do
cp /etc/xdg/autostart/$f ~/.config/autostart/$f
echo "X-GNOME-Autostart-enabled=false" >> ~/.config/autostart/$f
done
Đăng xuất và đăng nhập lại. Các lỗi cgroup sẽ biến mất.
Các lỗi cgroup đã biến mất. Tình trạng đóng băng? Vẫn hai phút, chính xác.
Thủ phạm thực sự: Tính toán của snapd
Sau khi loại bỏ các ứng cử viên rõ ràng, tôi đã chạy một tìm kiếm có mục tiêu cho bất cứ thứ gì trong nhật ký liên quan đến thời gian:
journalctl -b | grep -i "snap\|adjust\|timeout" | head -30
Nó đây rồi:
snapd[2242]: adjusting startup timeout by 2m0s (pessimistic estimate of 30s plus 5s per snap)
snapd[2242]: OsRelease{...} snap name "snapd-desktop-integration" error: service not found
Công thức hết thời gian chờ của Snapd
snapd tính toán thời gian chờ khởi động của nó là 30 giây + 5 giây cho mỗi snap đã cài đặt. Tôi đã cài đặt 18 snap. 30 + (5 × 18) = chính xác 120 giây.
Điều này được mã hóa cứng trong mã nguồn snapd. Bạn không thể cấu hình nó ngắn hơn.
Snap snapd-desktop-integration bị lỗi mỗi khi đăng nhập. snapd đã đợi toàn bộ thời gian chờ được tính toán (120 giây) trước khi từ bỏ và cho phép phiên tiếp tục.
Chẩn đoán Snap nào đang bị lỗi
# Check snap status
snap list
# Check for failing snap services
snap services | grep -v enabled
# Watch snap logs
journalctl -b -u snapd | grep -iE "fail|error|timeout"
Đầu ra cho thấy snapd-desktop-integration liên tục không thể kết nối. Nhiệm vụ của snap là đồng bộ hóa các chủ đề và phông chữ GTK giữa máy chủ và các ứng dụng snap được đóng gói. Hoàn toàn là thẩm mỹ — không có gì bị hỏng nếu nó thất bại, ngoại trừ việc chờ đăng nhập.
Cách khắc phục
sudo snap remove snapd-desktop-integration
Đăng xuất, đăng nhập lại. Màn hình nền tải ngay lập tức.
Thay thế: Giữ Snap, Xóa Dịch vụ
Nếu bạn muốn giữ snap để sử dụng thỉnh thoảng nhưng ngăn nó chạy khi đăng nhập:
sudo snap stop snapd-desktop-integration
sudo snap set snapd-desktop-integration daemon=false
Điều này ngăn dịch vụ tự động khởi động trong khi vẫn giữ snap được cài đặt.
Bức tranh toàn cảnh: Ba lỗi, một triệu chứng
| Lỗi | Công cụ phát hiện | Ảnh hưởng đến đăng nhập | Cách khắc phục |
|---|---|---|---|
NetworkManager-wait-online | systemd-analyze blame | +5 giây khi khởi động (không phải đăng nhập) | systemctl disable |
| gnome-keyring trùng lặp | journalctl -b -p err | Lỗi cgroup, chậm trễ nhỏ | Vô hiệu hóa các bản sao tự động khởi động |
| snapd hết thời gian chờ | journalctl -b | grep snap | +120 giây đóng băng khi đăng nhập | snap remove snapd-desktop-integration |
Mỗi lỗi đều có thật. Không lỗi nào trong số chúng tự gây ra tình trạng đóng băng hai phút cho đến khi vấn đề snapd được tìm thấy.
Kiểm tra phòng ngừa
Nếu bạn muốn kiểm tra những gì đang khởi động chậm trong phiên người dùng của mình mà không cần chờ đợi điều gì đó bị hỏng:
# Slowest user services at startup
systemd-analyze --user blame | head -20
# All snap services and their status
snap services
# Snaps that have autostart behavior
snap list | awk 'NR>1 {print $1}' | xargs -I{} snap info {} 2>/dev/null | grep -A2 "services:"
Đối với các hệ thống có nhiều snap, phép tính trên áp dụng: cứ thêm 6 snap sẽ tăng thêm 30 giây vào thời gian chờ trong trường hợp xấu nhất. Giữ danh sách snap của bạn gọn gàng.
Bảng gian lận chẩn đoán
Phân tích khởi động: systemd-analyze blame | head -20
Phân tích phiên người dùng: systemd-analyze --user blame | head -20
Lỗi đăng nhập: journalctl -b | grep -iE "timeout|timed out|failed"
Cụ thể về Snap: journalctl -b -u snapd | grep -iE "fail|adjust|timeout"
Dịch vụ Snap: snap services | grep -v enabled
Tóm tắt
Ba lỗi riêng biệt. Hai phút chờ đợi. Một lệnh snap remove đã khắc phục nó.
Bài học thực sự: đóng băng khi đăng nhập ≠ chậm khởi động. systemd-analyze blame sẽ không cho bạn thấy điều gì đang xảy ra sau khi bạn gõ mật khẩu. Sử dụng systemd-analyze --user blame và journalctl -b | grep -iE "failed|timeout" để tìm các vấn đề sau khi đăng nhập.
Công thức hết thời gian chờ 30 + 5n của snapd là nguyên nhân phổ biến nhất mà tôi từng thấy gây ra sự chậm trễ đăng nhập bí ẩn 1–2 phút trên các máy Ubuntu có nhiều snap được cài đặt. Nếu máy của bạn bị đóng băng chính xác N×30 giây sau khi đăng nhập, hãy kiểm tra các dịch vụ snap trước.
Bạn cũng có thể thích
Free In-Browser Developer Tools
Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.
Related Articles

Khắc phục độ trễ đăng nhập 2–3 phút trên Ubuntu với NVIDIA (lỗi Xorg + nvidia-drm)
Sau khi cập nhật kernel, máy tính để bàn Ubuntu của tôi mất 2–3 phút để hiển thị sau khi đăng nhập, nguyên nhân là do xung đột quyền sở hữu DRM modeset giữa nvidia-drm và Xorg, và đây là cách tôi đã khắc phục nó chỉ trong 10 giây.
Read more
Bảo mật Ubuntu Server: Danh sách kiểm tra tăng cường bảo mật Linux thực tế
Hướng dẫn tăng cường bảo mật máy chủ Ubuntu trong môi trường sản xuất: thực thi khóa SSH, tường lửa UFW, ngăn chặn xâm nhập Fail2ban, nâng cấp tự động và ghi nhật ký auditd.
Read more
Điện toán biên vào năm 2026: Các mẫu kiến trúc và trường hợp sử dụng thực tế
Khám phá cách Điện toán biên đã trưởng thành vượt ra ngoài CDN, cung cấp sức mạnh cho các ứng dụng hiện đại từ suy luận AI thời gian thực đến chơi game nhiều người chơi phân tán.
Read more