Gần đây tôi đã nâng cấp lên OSX Mavericks và kể từ đó, tôi đã bắt đầu nhận được lỗi nói trên trên máy phát triển của mình. Không có vấn đề rõ ràng trong mã (nó là một ứng dụng mẫu tự động tạo ra Yii). Điều gì đã xảy ra trong quá trình nâng cấp lên Mavericks là:Apache PHP/OSX Mavericks: - không thể mở luồng: Quá nhiều tệp mở
- PHP đã được nâng cấp từ phiên bản 5.2.x đi kèm OSX Lion đến 5.4.x.
- Tôi phải lấy Zend Debugger cho PHP 5.4 bằng cách cài đặt Zend Server, chọn ZendDebugger.so và gỡ cài đặt Zend Server (tất cả điều này vì Zend không cung cấp phiên bản độc lập của trình gỡ lỗi cho php 5.4.x).
Kể từ đó, tôi gặp sự cố này sau khi tải và tải lại trang web một vài lần. Sau khi lỗi này xảy ra, máy chủ web của tôi liên tục trả về cùng một lỗi cho bất kỳ ứng dụng nào khác được lưu trữ trên máy chủ cục bộ. Tôi phải đề cập đến rằng các trang web tĩnh được phục vụ tốt.
Tôi đã xem một số threads về chủ đề này. Hầu hết chỉ ra các vấn đề trong mã mà các tay cầm tập tin không được đóng đúng cách, qua đó vượt qua ngưỡng giới hạn tệp mở. Tôi cũng tìm thấy điều này thread mà dường như đề nghị này có thể là một vấn đề trình gỡ lỗi zend. Ngoài ra còn có một số bug report được gửi cho php 5.2.x. Sau thread here, tôi thử như sau:
$ ulimit -a
mà báo cáo:
open files (-n) 256
Ngoài ra,
sysctl -a | grep files
lợi nhuận,
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
kern.num_files: 3248
Một thú vị thread đề xuất tăng giới hạn này (hiện tại là 256) bằng cách sử dụng:
ulimit -n 1024
Tôi đã thử mọi thứ, nhưng không có gì có vẻ hiệu quả. Vấn đề cũng không thể tái sản xuất liên tục.
Tôi tự hỏi đang sử dụng ulimit -n 1024
sẽ ảnh hưởng đến apache, kể từ những gì tôi đã đọc, nó ảnh hưởng đến số lượng tệp vỏ có thể mở.
Mọi trợ giúp đều được đánh giá cao.
EDIT:
- Khởi động lại
apache
giúp cho một chút, cho đến khi lỗi được gặp lại. - Rời khỏi máy chủ web không hoạt động một chút (không có khoảng thời gian xác định) cũng sẽ giúp ích.
Điều này đã sửa nó cho tôi. Đã hơn một tháng kể từ khi tôi thấy lỗi đó một lần nữa. –