Sử dụng APC hoặc APCu từ lâu đã là một phương pháp opcode cache được sử dụng rộng rãi để tối ưu hoạt động của VPS. Tuy nhiên APC không được cập nhật, nâng cấp thường xuyên (phiên bản stable mới nhất 3.1.9 ra ngày 2011-05-14) và thỉnh thoảng vẫn xuất hiện một số lỗi vặt.
Với sự xuất hiện của Zend OPcache mặc định đi kèm từ phiên bản PHP 5.5 trở về sau, chắc chắn APC hoặc các opcode cache khác sẽ không có cửa để phát triển nữa.
Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Zend OPcache với phiên bản PHP 5.5 và 5.6. Các phiên bản PHP 5.4 hoặc 5.3 sẽ có cách cài đặt khác, mình không đề cập trong bài viết này vì phiên bản PHP quá cũ rồi.
Để xem phiên bản PHP hiện tại bạn hãy sử dụng lệnh php -v
hoặc php-fpm -v
Các bạn có thể sử dụng tham số --enable-opcache
khi compile PHP, tuy nhiên cách này hơi khó thực hiện với đa số người dùng, do đó hãy dùng cách cài đặt thêm extension cho PHP. Lưu ý cần cài đặt PHP trước khi bắt đầu.
HocVPS Script mặc định tích hợp Zend Opcache rồi, các bạn đang dùng không cần cài thêm nữa nhé.
1. Thêm repo epel, remi
## CentOS 7 ## yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm ## CentOS 6 ## yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Bước này có thể bỏ qua nếu bạn đã làm theo hướng dẫn cài đặt LEMP trên CentOS.
2. Cài đặt PHP’s Zend Opcache
## PHP 7.0 ## yum --enablerepo=remi,remi-php70 install php-opcache service php-fpm restart ## PHP 5.6 ## yum --enablerepo=remi,remi-php56 install php-opcache service php-fpm restart ## PHP 5.5 ## yum --enablerepo=remi,remi-php55 install php-opcache service php-fpm restart
Với PHP 5.4, 5.3 xem comment bên dưới.
Sau khi cài đặt xong, bạn hãy xem thông tin phpinfo()
, nếu có Zend OPcache xuất hiện như bên dưới là đã thành công.
3. Cấu hình PHP’s Zend Opcache
Mặc định, OPcache sử dụng 128MB bộ nhớ và cache tối đa 4.000 files. Nếu bạn muốn thay đổi tham số này thì chỉ cần chỉnh sửa trong file cấu hình /etc/php.d/10-opcache.ini
hoặc /etc/php.d/opcache.ini
nano /etc/php.d/10-opcache.ini
Các thông tin cần chỉnh
; The OPcache shared memory storage size. opcache.memory_consumption=128 ; The maximum number of keys (scripts) in the OPcache hash table. ; Only numbers between 200 and 100000 are allowed. opcache.max_accelerated_files=4000
4. Web Viewer
Để theo dõi được tình trạng sử dụng Zend Opcache, các bạn có thể sử dụng Web Viewer opcache-gui by amnuts (hoặc cài đặt plugin OPcache Dashboard nếu dùng WordPress).
Ưu điểm có giao diện responsive, nhiều tính năng và có thể reset/flush opcache.
Cài đặt
wget https://raw.github.com/amnuts/opcache-gui/master/index.php -O op.php
Hình ảnh
5. Gỡ bỏ Zend Opcache
– Để tạm thời tắt tính năng cache, bạn hãy edit file cấu hình /etc/php.d/10-opcache.ini
hoặc /etc/php.d/opcache.ini
nano /etc/php.d/10-opcache.ini
Chỉnh tham số opcache.enable=1
thành opcache.enable=0
, sau đó restart lại php-fpm
service php-fpm restart
Sau khi chỉnh sửa code xong, hãy kích hoạt lại opcache.enable=1
.
– Để gỡ hẳn Zend Opcache khỏi server (không nên nhé), bạn hãy chạy lệnh:
yum -y remove php-opcache service php-fpm restart
Thằng này chẳng hiểu kiểu gì VPS mình RAM 30GB, 8Core mà ăn Max 100%, CPU thì thấy thằng PHP FPM ngún ghê thiệt lúc dùng bên VestaCP thì không bị sao.
Bác Luân ơi. em cài hocvps dùng php 5.6 các thứ vẫn chạy bình thường chỉ có khi truy cập vào …op.php để xóa cache php thì bị lỗi http 500. Bác có thể chi em cách fix đc ko ?
Mình sử dụng vps 1cpu 25gb ssd 1gb ram lúc nào cũng hit rate 100% , memory 100%.. vậy nên tăng opcache.memory_consumption và opcache.max_accelerated_files lên bao nhiêu là hợp lý ạ
Hi. Php 7.1 cài dư lào z bác
Mình cấu hình lên 150Mb thì chỉ vài ngày lên 94% nên mình nâng lên 200Mb
Cho mình hỏi việc nâng memory lên thế này có ảnh hưởng gì không?
Anh ơi, e cài zend opcache rồi, nhưng lúc sửa file php đợi hơi lâu. E muốn cache php chỉ khoảng 10 giây thôi. E cấu hình ở tham số nào a nhỉ?
10s thì cache làm gì bạn. Bạn cần sửa thì bạn xóa cache thôi
Trong file cấu hình bạn thêm hai dòng sau nhé.
opcache.revalidate_freq=0
opcache.validate_timestamps=1
Mình cài bị lỗi No package php-opcache available. là sao bạn nhỉ?
(mình đã cài remi)
Bạn cài EPEL chưa? PHP bạn phiên bản gì? Bạn kích hoạt remi đúng theo phiên bản PHP chứ?
Mình dùng php 5.6, đã cài epel và remi đúng phiên bản, hay là package ko tồn tại trện server, phải tải riêng về nhỉ?
Package ý trong Repo nên nếu tải riêng bạn phải tự compile thủ công, như PHP 5.4 phải làm
https://hocvps.com/cai-dat-va-cau-hinh-php-zend-opcache/comment-page-1/#comment-2426
Bạn ơi mình cài được rồi, dùng lệnh php-v nó báo:
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
vậy là ok rồi đúng ko bạn? Nhưng trong total cache mình vẫn xám xịt mới lạ
Được rồi bạn nhé. Bạn kiểm tra total cache ở đâu?
Trong dashboard báo “Opcode cache: Not installed”
còn trong opcode cache báo xám
Mình dùng centos 6, php 5.6
Dashboard nào bạn? Ý bạn là phpinfo() hay trang nào?
vào wp total cacche dashboard, xong vào compatibility check ấy bạn
Bạn cài xong có restart service không?
restart hết, restart cả vps luôn
Cho mình hỏi, VPS của mình cấu hình như sau: 2 vCore, RAM: 4096 MB, Storage: 60 GB SSD thì mình nên cấu hình PHP’s Zend Opcache như thế nào cho tối ưu (bộ nhớ, số file)
Cảm ơn bạn.
Bạn thử với cấu hình như này nhé.
opcache.memory_consumption=512
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=1000000
opcache.revalidate_freq=0
opcache.enable_cli=1
opcache.validate_permission=1
opcache.use_cwd=1
opcache.revalidate_path=1
opcache.enable_file_override=1
Bạn ơi, mình cài wp-rocket vào thì nó bị lỗi css, nhiều khi ảnh ở trang chủ cũng k xuất hiện
hoặc nếu xuất hiện thì vỡ trang như này https://tokybook.com/english-audiobook/
Có phải do Wp-rocket với OPcache bị xung đột không bạn ?
Bạn deactive plugin WP-Rocket xem sao
Mong anh Luân và các anh em giải đáp dùm.
1. Mình có 6G video, 200 học viên học online thì mình nên mua VPS cấu hình như thế nào để đáp ứng?
2. Video mình muốn bảo mật nên mình sẽ post và lưu trữ trên VPS thì có làm cho web mình chậm nhiều không?
Trân trọng cảm ơn
Nếu thế thì vị trí học viên và vps càn cùng quốc gia để tận dụng tối đa băng thông của vps và vps cần port speed 1 Gpbs để đủ băng thông. Còn vụ làm vps chậm hay không thì chắc chắn là có nếu như băng thông bị chiếm dụng hết.
Nhờ em Luân update vào bài thông tin này:
Nếu chạy nhiều site wordpress, hoặc các file giống nhau bị cache trên cùng 1 server cài Zen OPcache có thể gặp phải lỗi sau:
PHP Fatal error: Cannot redeclare wp_get_server_protocol() (previously declared in /home/USER1/public_html/wp-includes/load.php:16) in /home/USER2/public_html/blog/wp-includes/load.php on line 16
Cái này fix bằng cách thêm dòng sau vào file config của Zen OPcache:
opcache.validate_permission=1
Sau đó nhớ reset lại php-fpm:
service php-fpm restart
Làm sao để check được server mình có bị lỗi đó hay ko? Chắc phải đọc file log mới biết được hả bro?
hocvps đã lên phph7.1 thì cài theo được k bạn
HocVPS có tích hợp sẵn Zend OPcache rồi bạn nhé
ad làm bài hướng dẫn bằng video sử dụng lamp hoặc sử dụng ubuntu để cahyj wep php trên đó đi ạ
Bạn tham khảo các hướng dẫn khác trên mạng nhé. Hướng dẫn bằng video cũng không giải quyết nhiều vấn đề khi toàn bộ là cửa sổ dòng lệnh, không có thao tác chuột
Ưu điểm có giao diện responsive, nhiều tính năng và có thể reset/flush opcache.
Nhưng khi truy xuất ip:port/op.php thì thấy yêu cầu nhập user name vs password.
Bạn đặt trong phần port quản lý HocVPS ? Nếu thế bạn nhập user pass bên HocVPs Quản lý là ok mà
Cập nhật thêm là em dùng filezilla để xem thì mặc định op.php sẽ nằm trong /home. em move file đó vào folder /home/domain.com của em và truy xuất lại bằng domain.com/op.php thì được.
Nếu vậy sau này nhiều site, thì em phải copy từng op.php vào từng thư mục site khác đúng ko ạ. Em dùng hocvps script
Em chạy lệnh
wget
ở đâu thì file sẽ tải về ở đó nhé. Ngoài ra, chỉ cần cài PHP Zend OPcache 1 lần là đủ. Và nó hoạt động trên toàn hệ thống PHP mà, đâu phải theo mỗi 1 site. Cáiopcache-gui by amnuts
là giúp theo dõi thôiHi anh, em đã làm hướng dẫn cài opcache-gui by amnuts để view cái op.php. Nhưng khi truy xuất ip:port/op.php thì thấy yêu cầu nhập user name vs password. EM đã nhập username là root và pass của vps nhưng ko thấy phản hồi gì à.
Các file muốn view được bằng browser thì nằm trong thư mục
/home/domain.com/public_html
em nhé. Khi đó em truy cập bằng doamin.com/file là đượccache tối đa 4.000 files trong THỜI gian bao lâu vậy bạn. thì cache file đó được reload lại????
60 seconds nha.
Có cách nào tăng time cache lên không bạn, cache 60s thì ngắn quá. tầm 2 tiếng thì ok
Đó là cache file .PHP nha, như vậy ok rồi.
Luân cho hỏi câu nữa.
Theo câu trả lời của Luân: Bạn mở file /etc/php.d/10-opcache.ini và chỉnh opcache.enable=1 thành opcache.enable=0 rồi restart lại php-fpm để tắt cache nhé. Thì như vậy là vô hiệu hóa OPCache à? Nếu vậy cài OPCache mà enable = 0 thì cũng vô nghĩa đúng không?
Đúng rồi, cái đó để vô hiệu hóa OPCache.
Thư mục /etc/php.d/ cũng không tồn tại. Check phpinfo thì đã có OPCache.
Luân cho mình hỏi làm sao để xác định vị trí lưu file cài đặt của nó?
Đây là 1 extension của PHP nên nếu cài đặt thành công sẽ có file cấu hình .ini ở đây: /etc/php.d/
Luân xem nghiên cứu lại, chứ mình chạy lệnh đó nhiều lần đều báo lỗi No package php-opcache available
Chào Luân,
Hiện tại mình chạy đến bước:
yum –enablerepo=remi,remi-php55 install php-opcache
thì nhận thông báo sau:
No package php-opcache available.
Error: Nothing to do
Với lỗi này khắc phục thế nào?
Đồng thời memcache thì thông số CACHESIZE để bao nhiêu là phù hợp với RAM 3GB?
Cảm ơn Luân!
php -v
của bạn output là gì?Cấu hình dung lượng memcache tùy theo số lượng page và dung lượng database của bạn. Cứ setup 1 giá trị nào đó rồi theo dõi dần, thiếu thì bổ sung thêm nha.
PHP 5.5
Kì lạ nhỉ, thông thường thì lệnh này cài ngon ơ đó.
Mình chạy lệnh yum –enablerepo=remi,remi-php55 install php-opcache thì báo No package php-opcache available., làm sao để khắc phục ạ?
xem phpinfo() không thấy gì hết. mình đã cài xong rồi mà.
😀
Mình cài hocvps script và có 2 website wordpress chạy, tối đa 1 lúc chỉ khoảng 10 kết nối đồng thời cả 2 website.
Mình để mặc định cấu hình opcache và có cài wp super cache cho cả 2 website, thấy Opcache lúc nào cũng báo dùng 99%, hit 100%
Như vậy có gì sai ko Luân?
Bạn nâng thêm RAM cho Opcache đi, để tầm 70% là ok.
Tăng bộ nhớ lên 300
opcache.memory_consumption=300
Nhưng khi vào op.php nó vẫn chỉ báo 128MB và Memory Usage luôn 100%.
Luân có cách nào fix nó không?
Chắc bạn chưa restart php-fpm?
MInh restart Vps luon.
Luan cho minh dong lenh restart php fpm di.
Thường thì restart VPS là ok rồi.
Lệnh restart PHP: service php-fpm restart
CHo e hỏi chút là khi cài cái cache này khi sửa code nó cứ phải đợi 1 lúc mới có tác dụng.
Vào đâu tùy chình tắt mở nó được a nhỉ.
Sửa xong web thì mới cho bật cache lên
Bạn mở file
/etc/php.d/10-opcache.ini
và chỉnhopcache.enable=1
thànhopcache.enable=0
rồi restart lại php-fpm để tắt cache nhé.xin Ad chir cachs cài cái này trên CWP với php5.6
Cảm ơn
Luân ơi cho mình hỏi mình dùng PHP 7 có cài được không ?
Được nhé bạn