Fix lỗi “Apache: No space left on device: Couldn’t create accept lock”

Fix lỗi “Apache: No space left on device: Couldn’t create accept lock” | Là một nhân viên quản trị hệ thống, chắc hẳn bạn đã từng tiếp xúc và làm việc với Apache Web Server rồi phải không nào. Hôm nay mình xin chia sẽ các bạn một trường hợp lỗi mình gặp phải và cách để khắc phục. Các bạn theo dõi nhé.

loi apache no space left

Có thể bạn quan tâm chủ đề khác
Hướng dẫn cài đặt LAMP trên CentOS 7
Hướng dẫn cài đặt VestaCP trên CentOS 7 quản lý Hosting/VPS
Litespeed là gì ?
Hướng dẫn cài đặt Litespeed Web Server trên CentOS 7

Một ngày đẹp trời nào đó, bỗng nhiên dịch vụ Apache không khởi động (start) lên được, mặc dù khi bạn restart nhiều lần  thì nó stop không vấn đề gì, khi start lên thì báo lỗi. Check log Apache ‘/var/log/httpd/error.log‘ bạn thấy thông báo lỗi sau lặp lại liên tục:

[[emerg] (28) No space left on device: Couldn't create accept lock

Một số phương án kiểm tra xử lý lỗi

1. Kiểm tra dung lượng ổ cứng

Đây là bước kiểm tra được ưu tiên nhất và cũng là cách khắc phục dễ nhất. Nếu Server/VPS của bạn hết dung lượng ổ cứng. Hãy giải phóng dung lượng ổ cứng bằng cách xóa các file nặng không cần thiết như backup, log… Lưu ý là bạn phải kiểm tra 2 phần gồm : dung lượng inode hệ thống.

# df -h
# df -i

2. Xem lại giới hạn filesystem

Nếu filesystem bạn sử dụng quotas, có thể bạn đang đến giới hạn của quotas chứ không phải giới hạn dung lượng disk. Bạn hãy sử dụng lệnh repquota / để kiểm tra quotas trên root partition. Nếu thật sự lỗi như vậy bạn hãy tăng quota hoặc giải phóng dung lượng ổ cứng. Thường có thể file log Apache là thủ phạm trong trường hợp này.

3. Xoá các semaphore đang hiện hữu

Semaphores là cái gì thế ??? Bạn đã nghe đến khái niệm semaphores ngày xưa được dân hàng hải dùng để giao tiếp bằng 2 lá cờ rồi đúng không? Trong lập trình, semaphores được sử dụng để giao tiếp giữa các active process trong một ứng dụng nhất định nào đó. Cụ thể trong Apache , chúng được sử dụng để giao tiếp giữa tiến trình cha (parent process) và tiến trình con (child process). Nếu Apache không thể ghi thông tin semaphore, khi đó nó không thể giao tiếp chính xác những process mà nó đã bắt đầu.

Nếu Apache service của bạn đang stop, bạn hãy kiểm tra như sau với quyền user root:

# ipcs -s

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x6c030690 98304 zabbix 600 527280 6

------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 0 root 600 1
0x00000000 32769 root 600 1
0x00000000 4980738 apache 600 1
0x00000000 5013507 apache 600 1
0x7a030690 29261828 zabbix 600 13
0x530310b0 18219013 root 600 103
0x480310b0 18251782 root 600 9
[...]
0x00000000 38273132 apache 600 1
0x00000000 38305901 apache 600 1
0x00000000 38338670 apache 600 1
0x00000000 39387247 apache 600 1
0x00000000 39420016 apache 600 1
0x00000000 39452785 apache 600 1
0x00000000 39485554 apache 600 1
0x00000000 40566899 apache 600 1
0x00000000 40599668 apache 600 1
0x00000000 40632437 apache 600 1
0x00000000 40665206 apache 600 1
0x00000000 41779319 apache 600 1
0x00000000 42008696 apache 600 1
0x00000000 42041465 apache 600 1
0x00000000 42074234 apache 600 1

Nếu bạn nhìn thấy list các semaphore khá nhiều thì có nghĩa là vì nguyên nhân nào đó không xác định được. Apache không tự clear được semaphore cũ dành cho giao tiếp tiến trình trước đó và semaphore bị mắc kẹt lại. Từ đó tràn bộ nhớ dành cho các thông tin semaphore. Chúng ta sẽ xóa chúng bằng lệnh sau nhé.

# for i in `ipcs -s | awk '/apache/ {print $2}'`; do (ipcrm -s $i); done

Trong 3 trường hợp trên, thường thì Apache sẽ khởi động lên được. Nếu nó vẫn chưa được thì bạn thử tăng semaphores lên bằng cách mở file /ect/sysctl.conf thêm vào option sau:

# vi /ect/sysctl.conf

kernel.msgmni = 1024
kernel.sem = 250 256000 32 1024

Sau đó chạy lệnh sysctl –p để áp cấu hình mới.

# sysctl -p

Tổng kết

Như vậy là CuongQuach.com đã hướng dẫn các bạn hoàn tất các bước kiểm tra hệ thống khi gặp lỗi “Apache: No space left on device: Couldn’t create accept lock”. Vô cùng đơn giản phải không nào, cám ơn các bạn đã theo dõi.

Nguồn: https://cuongquach.com/

Previous article[Python] Kiểm tra chuỗi hash MD5 từ của file bằng Python
Next articleEbook Your UNIX Linux The Ultimate Guide 3rd Edition (PDF)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !