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, mình dự đoán đây sẽ là xu hướng trong tương lai để thay thế cho APC hoặc các opcode cache khác.

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.

Để 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.

Plugin Duplicator, BackWPUp hay UpDraftPlus của WordPress bị lỗi 502 Bad Gateway không tương thích với Zend OPCache, để khắc phục các bạn hãy tham khảo hướng dẫn sau.

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.

Zend OPcache

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/opcache.ini hoặc /etc/php.d/10-opcache.ini

nano /etc/php.d/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

opcache gui

Khuyến cáo: với các blog nhỏ, ít người truy cập các bạn không cần thiết phải tìm cách tối ưu server làm gì, chỉ cần cài HocVPS Script với plugin WP Super Cache là đủ rồi. Thời gian rảnh rỗi hãy tìm cách phát triển content nhé.

143 Comments

  1. Duy 2 comment

    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

    1. Luân Trần Admin

      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é.

  2. Tommy Nguyen 28 comment

    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?

        1. Luân Trần Admin

          Thường thì restart VPS là ok rồi.
          Lệnh restart PHP: service php-fpm restart

  3. Kevin 6 comment

    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%

  4. An 1 comment

    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 ạ?

  5. An 6 comment

    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!

    1. Luân Trần Admin

      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.

  6. An 6 comment

    Luân cho mình hỏi làm sao để xác định vị trí lưu file cài đặt của nó?

    1. Luân Trần Admin

      Đâ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/

    2. An 6 comment

      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

  7. An 6 comment

    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?

  8. vui 2 comment

    cache tối đa 4.000 files trong THỜI gian bao lâu vậy bạn. thì cache file đó được reload lại????

      1. vui 2 comment

        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

  9. Nam Thanh 31 comment

    Hi 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ì à.

    1. Việt Phương Moderator

      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à được

  10. Nam Thanh 31 comment

    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

    1. Việt Phương Moderator

      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ái opcache-gui by amnuts là giúp theo dõi thôi

    1. Việt Phương Moderator

      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à

Comment của bạn

Your email address will not be published. Required fields are marked *