2013-02-16 9 views
5

Tôi có một ứng dụng PHP (CLI) đa tiến trình chạy liên tục. Ban đầu, tôi đã sử dụng gói xây dựng gói chuẩn 10.04 của PHP (5.3.2-1ubuntu4.18). Tuy nhiên, tôi đang cố gắng tối ưu hóa việc sử dụng bộ nhớ vì lượng bộ nhớ được sử dụng bởi mỗi quá trình giới hạn số lượng nhánh mà tôi có thể chạy tại bất kỳ thời điểm nào (vì tôi có một lượng bộ nhớ hữu hạn). Theo lời khuyên của preinheimer, tôi biên dịch lại PHP, vô hiệu hóa tất cả các tiện ích mở rộng và sau đó chỉ bật lại những ứng dụng cần thiết cho ứng dụng của tôi (mysql, curl, pcntl, posix và json). lệnh configure của tôi là:Tại sao phải biên dịch lại PHP bằng cách sử dụng một lượng lớn CPU so với phiên bản Ubuntu mặc định?

'./configure' '--prefix=/usr/local/phpbare' '--with-config-file-path=/etc \ 
/php5/clibare' '--disable-all' '--with-mysql=mysqlnd' '--with-curl' \ 
'--enable-pcntl' '--enable-posix' '--enable-json' 

này mới "xương trần" xây dựng cho phép ứng dụng của tôi để chạy, nhưng trước sự ngạc nhiên của tôi, khi tôi xem các tiến trình đang chạy bằng top, nó sử dụng khoảng cùng một lượng bộ nhớ như trước đây và (thậm chí còn có vấn đề hơn), nó sử dụng số tiền lớn thời gian CPU (thường là 15-20% của CPU khi trước số tiền được báo cáo bằng đầu thường là 0-1%). Có thể là tôi thiếu một số phần mở rộng php mà bằng cách nào đó tối ưu hóa kịch bản để sử dụng tài nguyên máy tính ít hơn? Hoặc là xây dựng Ubuntu có lẽ tối ưu hóa cho kiến ​​trúc Ubuntu, trong khi xây dựng tùy chỉnh của tôi là thiếu những tối ưu hóa? Nếu vậy, làm thế nào tôi có thể tìm ra tối ưu hóa nào được sử dụng trong xây dựng Ubuntu, để tái tạo chúng trong "xương trần" của tôi xây dựng?

Dưới đây là một đoạn đầu ra từ ps aux | grep php, được sử dụng để chứng minh quan điểm của tôi trong các ý kiến ​​dưới đây:

root 12952 0.3 0.9 33176 4968 pts/2 S Feb14 11:15 s.php 5 
root 12955 0.3 0.9 32664 4732 pts/2 S Feb14 11:12 s.php 5 
root 12958 0.3 0.9 32664 4796 pts/2 S Feb14 10:51 s.php 5 
root 12961 0.3 0.9 32740 4752 pts/2 S Feb14 11:07 s.php 5 
root 14162 0.3 0.9 33000 4904 pts/2 S Feb14 10:51 s.php 5 
root 14165 0.3 1.0 33256 5340 pts/2 S Feb14 10:56 s.php 5 
root 23426 9.5 1.1 13492 6040 pts/2 S Feb15 151:38 s.php 1 
+1

bạn có đang sử dụng cùng tệp .ini như bạn đang sử dụng phiên bản ubuntu cổ phiếu không? –

+0

Đúng. Tôi chỉ sao chép nó mà không sửa đổi thư mục được chỉ định bởi --with-config-file-path và xác nhận tệp này đang được sử dụng với php -i => Loaded Configuration File => /etc/php5/clibare/php.ini – robguinness

+0

những gì bạn thực sự cần được đo lường là tốc độ mà tại đó kịch bản chạy, không phải sử dụng CPU. Bạn thực sự _want_ 100% CPU của bạn sẽ được sử dụng khi tập lệnh đang chạy. – Evert

Trả lời

-1

Opcode Cache làm cho PHP nhanh hơn nhiều lần. Đảm bảo bạn đã cài đặt tiện ích mở rộng như APC.

Bạn cũng có thể kiểm tra phpinfo() gói tiêu chuẩn để xem tùy chọn configure được sử dụng và biên dịch lại với các tùy chọn tương tự để kiểm tra xem đó là vấn đề về cấu hình hay cái gì khác, như trình biên dịch hoặc thư viện khác.

+0

Thật không may, trong gói tiêu chuẩn Ubuntu, dòng lệnh Cấu hình từ phpinfo() bị tắt. Nhưng nếu không, người ta vẫn có thể liếc một số thông tin cấu hình từ phpinfo(), không chỉ lệnh cấu hình chính xác. – robguinness

Các vấn đề liên quan