CHIA SẺ:

Memcached là một hệ thống cache hoạt động bằng cách lưu tạm thông tin những dữ liệu bạn hay sử dụng vào bộ nhớ RAM. Do tốc độ đọc ghi của bộ nhớ bao giờ cũng cao hơn so với lưu trữ file nên việc sử dụng memcached giúp cho hệ thống của bạn tăng tốc lên một cách đáng kể.

Mô hình hoạt động của Memcached:

memcached-architecture

Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Memcached trên CentOS 7/6/5.

Cài đặt Memcached

– Cài đặt Remi repository với CentOS 5 (CentOS 7 và 6 không cần bước này)

## Remi Dependency on CentOS 5
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

– Cài đặt Memcached package

## CentOS 7 and 6
yum install memcached

## CentOS 5
yum --enablerepo=remi install memcached

Bạn cần lưu ý là có 2 memcache package tồn tại là memcache và memcached (có thêm chữ d ở cuối) cũng như có 2 phiên bản PHP Extention Module tương ứng là php-pecl-memcache và php-pecl-memcached. Chúng ta sẽ sử dụng phiên bản thứ 2 (có chữ d) vì nó ổn định và hỗ trợ nhiều chức năng hơn.

Cấu hình Memcached

Thông số quan trọng nhất bạn cần lưu ý đó là CACHESIZE, đơn vị tính là MB. Ví dụ như bên dưới mình sử dụng 128MB để cache (mặc định 64MB)

nano /etc/sysconfig/memcached

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="128"
OPTIONS=""

Khởi động Memcached

chkconfig memcached on
service memcached start

Kiểm tra xem Memcached có hoạt động hay không

memcached-tool 127.0.0.1:11211 stats

#127.0.0.1:11211 Field Value
accepting_conns 1
auth_cmds 0
auth_errors 0
bytes 0
bytes_read 14
bytes_written 768
cas_badval 0
cas_hits 0
cas_misses 0
cmd_flush 0
cmd_get 0
cmd_set 0
conn_yields 0
connection_structures 11
curr_connections 10
curr_items 0
decr_hits 0
decr_misses 0
delete_hits 0
delete_misses 0
evictions 0
get_hits 0
get_misses 0
incr_hits 0
incr_misses 0
limit_maxbytes 536870912
listen_disabled_num 0
pid 1232
pointer_size 64
rusage_system 0.000999
rusage_user 0.000000
threads 4
time 1402941264
total_connections 12
total_items 0
uptime 114
version 1.4.4

Chú ý thông số uptime phía cuối, như vậy là memcached đã sẵn sàng hoạt động rồi.

Ngoài ra các bạn có thể sử dụng phpMemcachedAdmin để xem ngay trên trình duyệt.

Cài đặt Memcache và Memcached PHP Module trên CentOS

Để Memcached có thể hoạt động được với PHP, chúng ta cần cài đặt thêm PHP module.

PHP 5.5

yum --enablerepo=remi,remi-php55 install php-pecl-memcached php-pecl-memcache

PHP 5.6

yum --enablerepo=remi,remi-php56 install php-pecl-memcached php-pecl-memcache

PHP 7.0

yum --enablerepo=remi,remi-php70 install php-pecl-memcached php-pecl-memcache

Cuối cùng khởi động PHP và web server

service php-fpm restart
service nginx restart

Mở cổng Memcached (11211) trên Iptables Firewall

Trong trường hợp bạn sử dụng riêng một server Memcached thì cần phải mở port 11211 trên server cache.

Sử dụng lệnh sau

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT

Khởi động lại Iptables Firewall

service iptables restart

Cài đặt Memcached làm việc với WordPress

Để Memcached có thể hoạt động với WordPress bạn cần sử dụng plugin cache W3 Total Cache.

W3 Total Cache

Trong phần cài đặt plugin, hãy chọn page cache method là Memcached cho các module Page Cache, Database Cache và Object Cache là xong.

Giờ thì hãy tận hưởng tốc độ vù vù mà Memcache đem lại nhé.

Xóa Memcached

Nếu không dùng nữa và muốn xóa hoàn toàn Memcached khỏi server, bạn hãy chạy lệnh bên dưới:

yum remove memcached php-pecl-memcached php-pecl-memcache
service php-fpm restart
service nginx restart

Chúc các bạn thành công!

172 Comments

  1. Thanh Bình 4

    Error: Package: memcached-1.4.22-1.el6.remi.x86_64 (remi)
    Requires: libsasl2.so.2()(64bit)
    You could try using –skip-broken to work around the problem
    You could try running: rpm -Va –nofiles –nodigest

    Lỗi gì đây anh

    1. Luân Trần Admin

      Bạn mở file /etc/yum.repos.d/remi.repo tìm những dòng enabled=1 chuyển thành enabled=0 rồi cài lại xem sao nhé.

      1. Thanh Bình 4

        Tới bước module lại bị
        Error: Package: php-pecl-memcached-2.2.0-2.el6.remi.5.5.x86_64 (remi-php55)
        Requires: php(zend-abi) = 20121212-64
        Installed: php-common-5.6.16-1.el6.remi.x86_64 (@remi-php56)
        php(zend-abi) = 20131226-64
        Available: php-common-5.4.16-36.el7_1.x86_64 (base)
        php(zend-abi) = 20100525-64
        Available: php-common-5.4.45-1.el6.remi.x86_64 (remi)
        php(zend-abi) = 20100525-x86-64
        Available: php-common-5.4.45-2.el6.remi.x86_64 (remi)
        php(zend-abi) = 20100525-x86-64
        Available: php-common-5.5.29-1.el6.remi.x86_64 (remi-php55)
        php(zend-abi) = 20121212-64
        Available: php-common-5.5.30-1.el6.remi.x86_64 (remi-php55)
        php(zend-abi) = 20121212-64
        You could try using –skip-broken to work around the problem
        You could try running: rpm -Va –nofiles –nodigest

        1. Luân Trần Admin

          Do bản cài trên CentOS 7 bị lỗi nên mới gặp vấn đề kia. Mình đã update lại rồi, bạn cài lại VPS giúp mình được chứ?

      1. John Kenny 23

        Bước này nè Luân
        [root@panel ~]# chkconfig memcached on
        Note: Forwarding request to ‘systemctl enable memcached.service’.
        [root@panel ~]# service memcached start
        Redirecting to /bin/systemctl start memcached.service
        [root@panel ~]#

      2. John Kenny 23

        Mình vừa gỡ memcached ra cài lại thì
        memcached-tool 127.0.0.1:11211 stats
        Uptime đã báo hoạt động.

        Nhưng khi
        yum –enablerepo=remi,remi-php54 install php-pecl-memcached php-pecl-memcache
        PHP 5.4 thì toàn báo lỗi.

  2. Nam 1

    “Chỉ cần khi bạn sử dụng Memcached trên các local server khác.” Là như nào hả bạn? Có phải là server sử dụng để host nhiều website thì mới phải mở phải không ?

    1. Luân Trần Admin

      Khi bạn dùng nhiều server để quản lý database. Thương thì đa phần ko cần mở port này.

  3. z mup 35

    Sau khi chạy e lệnh này:

    service php-fpm restart
    service nginx restart

    Thì web mình truy cập vào nó lại ra như vầy:

    502 Bad Gateway / nginx

    Là bị j vậy ad 😀

  4. thuy phuong 6

    Luân ơi! Mình ko làm các bước ở trên xong mình gõ nano /etc/sysconfig/memcached và paste cái dòng
    PORT=”11211″
    USER=”memcached”
    MAXCONN=”10240″
    CACHESIZE=”64″
    OPTIONS=””
    vào trong thế là mình ko connect được với server luôn! bị disconect luôn! giờ làm sao, giúp mình với.

    1. Luân Trần Admin

      Cái đoạn bạn post ko liên quan đến việc disconnect, check lại cẩn thận đi.

      1. Hữu Hùng 34

        Minh xai PHP 5.4 vẫn chạy ngon nếu cài memcached theo hướng dẫn này đúng k bác?

  5. Nguyen Tung 35

    Chào bác Luân,

    Bác cho em hỏi nhờ chút với ạ
    Em đã setup được memcached trên centos 7. Nhờ bác hướng dẫn giúp cài đặt Memcached PHP Module (php7) trên centos 7 ạ

    Cảm ơn bác

      1. Nguyen Tung 35

        Cảm ơn anh
        Trong bài viết của anh là Cài đặt Memcache và Memcached PHP Module trên CentOS cho php 5.5 và 5.6
        Em hiện đang dùng php 7 anh ạ
        Em cài đặt như 5.6 thì không được
        Mong anh chỉ giúp

  6. Tan 10

    [root@ home]# chkconfig memcached on
    error reading information on service memcached: No such file or directory

    Cài học script, PHP 5.6, Centos 7. Và làm được tới bước này bị lỗi này. Luân xem giúp.

    1. Luân Trần Admin

      Mình cài thử server test trên Vultr, thấy bình thường mà nhỉ?

      [root@test home]# chkconfig memcached on
      Note: Forwarding request to ‘systemctl enable memcached.service’.
      Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.

      1. Tan 10

        đã reinstall server và setup thành công
        Dùng W3 Total Cache hiệu quả phếch.
        8blog wordpress.
        1920 connect mỗi 1p 🙂

        CPU Model [4Core] Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz | Frequency:2399.996 | Secondary cache:4096 KB | Bogomips:4799.99 ×4
        CPU usage 1.04%us, 1.04%sy, 0%ni, 97.92%id, 0%wa, 0%irq, 0%softirq | View Chart
        Space usage Total Space 78.248 G, Used 34.065 G, Free 44.183 G, Rate 43.53%
        Memory usage Total Memory: 3.702 G , Used 3.577 G , Free 0.126 G , Rate 96.61%
        Cache Memory 2.144 G , Rate 57.91 % | Buffers 0.192 G
        Real Memory Used 1.241 G , Real Memory Free 2.462 G , Rate 33.51 %
        SWAP: 4.474 G , Used 0.034 G , Free 4.44 G , Rate 0.75 %
        Average System Load 0.55 0.69 1.24 1/166

  7. sinhle 32

    mình bị lỗi là vào nano /etc/sysconfig/memcached : thì nó trống trơn không có gì hết
    còn vào bằng memcached-tool 127.0.0.1:11211 stats: thì vẫn có thông tin như bạn demo ở trên

  8. Trung Tran 15

    [root@vultr etc]# memcached-tool 127.0.0.1:11211 stats
    #127.0.0.1:11211 Field Value
    accepting_conns 1
    auth_cmds 0
    auth_errors 0
    bytes 0
    bytes_read 14
    bytes_written 1162
    cas_badval 0
    cas_hits 0
    cas_misses 0
    cmd_flush 0
    cmd_get 0
    cmd_set 0
    cmd_touch 0
    conn_yields 0
    connection_structures 11
    crawler_items_checked 0
    crawler_reclaimed 0
    curr_connections 10
    curr_items 0
    decr_hits 0
    decr_misses 0
    delete_hits 0
    delete_misses 0
    evicted_unfetched 0
    evictions 0
    expired_unfetched 0
    get_hits 0
    get_misses 0
    hash_bytes 524288
    hash_is_expanding 0
    hash_power_level 16
    incr_hits 0
    incr_misses 0
    libevent 2.0.21-stable
    limit_maxbytes 67108864
    listen_disabled_num 0
    lrutail_reflocked 0
    malloc_fails 0
    pid 16695
    pointer_size 64
    reclaimed 0
    reserved_fds 20
    rusage_system 0.010752
    rusage_user 0.024193
    threads 4
    time 1463042182
    time_in_listen_disabled_us 0
    total_connections 12
    total_items 0
    touch_hits 0
    touch_misses 0
    uptime 628
    version 1.4.25

    Mình đã ra kết quả giống vậy rồi, nhưng trong phần W3 Total Cache lại không thể chọn được Memcached, chỉ có thể chọn Disk: Basic và Disk: Enhanced

      1. Trung Tran 15

        Done, thanks Luân nhé.
        Đã chạy câu lệnh này: yum –enablerepo=remi,remi-php56 install php-pecl-memcached php-pecl-memcache
        Và nó works

  9. zmup 35

    Used 23.9 MBytes
    Total 64.0 MBytes
    Wasted 23.7 MBytes

    Mình set là 128 nhưng sao trong phpmemcached mình xem nó vẫn là 64MB ad nhỉ, nó trống khoảng 62% như thế thì ổn ko ?

    Tks ad

    1. Luân Trần Admin

      Mình thấy cứ <= 70% là ok nhé. Bạn khởi động lại service sau khi thay đổi cấu hình chưa?

  10. sinhle 32

    ————
    gõ vào “chkconfig memcached on” thì nó báo
    Note: Forwarding request to ‘systemctl enable memcached.service’.
    —————————
    gõ vào”service memcached start” thì nó báo
    Redirecting to /bin/systemctl start memcached.service
    ——
    Mình gõ “memcached-tool 127.0.0.1:11211 stats”
    Thấy cái uptime cao ngất ngưỡng :
    [root@sv ~]# memcached-tool 127.0.0.1:11211 stats
    #127.0.0.1:11211 Field Value
    accepting_conns 1
    auth_cmds 0
    auth_errors 0
    bytes 0
    bytes_read 27
    bytes_written 3089
    cas_badval 0
    cas_hits 0
    cas_misses 0
    cmd_flush 0
    cmd_get 0
    cmd_set 0
    cmd_touch 0
    conn_yields 0
    connection_structures 11
    curr_connections 10
    curr_items 0
    decr_hits 0
    decr_misses 0
    delete_hits 0
    delete_misses 0
    evicted_unfetched 0
    evictions 0
    expired_unfetched 0
    get_hits 0
    get_misses 0
    hash_bytes 524288
    hash_is_expanding 0
    hash_power_level 16
    incr_hits 0
    incr_misses 0
    libevent 2.0.21-stable
    limit_maxbytes 134217728
    listen_disabled_num 0
    pid 740
    pointer_size 64
    reclaimed 0
    reserved_fds 20
    rusage_system 58.146759
    rusage_user 76.102593
    threads 4
    time 1465202091
    total_connections 14
    total_items 0
    touch_hits 0
    touch_misses 0
    uptime 2078167
    version 1.4.15
    —————-
    gõ ” service php-fpm restart” thì nó báo:
    Redirecting to /bin/systemctl restart php-fpm.service
    Failed to restart php-fpm.service: Unit php-fpm.service failed to load: No such file or directory.
    ——————–
    gõ “service httpd restart” thì nó báo
    Redirecting to /bin/systemctl restart httpd.service
    nhờ ad giúp. cảm ơn.

  11. Thanh Tùng 8

    Cài đặt Memcache và Memcached PHP Module trên CentOS
    đang dùng php 5.6 mà cài nhầm lệnh của php7 thì có làm sao ko nhỉ các bạn ?

  12. Phuong Nguyen Chu Nam 11

    Mình tới đoạn cài tích hợp lên php:

    yum –enablerepo=remi,remi-php56 install php-pecl-memcached php-pecl-memcache

    thì nó báo lỗi này:

    Error: php56u-common conflicts with php-common-5.3.3-47.el6.x86_64
    You could try using –skip-broken to work around the problem
    You could try running: rpm -Va –nofiles –nodigest

    1. Luân Trần Admin

      Lệnh đó chỉ dành cho PHP 5.6, bạn đang dùng PHP 5.3 nên ko dùng được. Thử yum --enablerepo=remi install php-pecl-memcached php-pecl-memcache xem sao?

  13. Nate 10

    Loi gi day luan oi cenos 7

    – chkconfig memcached on
    Note: Forwarding request to ‘systemctl enable memcached.service’.

    -service memcached start
    Redirecting to /bin/systemctl start memcached.service

    1. Luân Trần Admin

      Không phải lỗi, mà bạn đang dùng câu lệnh của CentOS 6 trên CentOS 7 nên nó thay đổi thôi. Chuẩn là:
      systemctl enable memcached.service
      systemctl start memcached.service

  14. Truong Minh Tam 10

    Sau khi cài theo hướng dẫn xong hết. Bật cached theo chỉ dẫn xong blog die luôn không hiễn thị gì luôn ? bị sao vậy bạn ? Phải tắt plugin total cached thì blog mới hoạt động lại.
    Nếu không cài total cached mà dùng supper cached có được không bạn ?

    1. Luân Trần Admin

      Dùng WP Super Cache ok, nhưng plugin này không dùng được với Memcached nhé

      1. Vũ Hoàn 4

        Mình có hỏi @Luân Trần: Centos mình đã cài Cpanel 11 thì có thể cài thêm Memcached như hướng dẫn trên ko nhỉ?

        @Luân Trần reply: Memcached chỉ là 1 extension của PHP, mình nghĩ sẽ cài thêm ok thôi.

        Vậy là mình cài theo, kết quả là cũng gặp lỗi giống như bạn phía trên.

        @Luân Trần cho mình hỏi thêm 2 câu hỏi nhé:
        1. Mình đã cài đến bước đó mà gặp nỗi thì coi như các bước trên ko có tác dụng phải ko?

        2. @Luân Trần có giải pháp nào để Centos đã cài Cpanel dùng đc memcached ko?
        Hoặc bạn có giải pháp nào khác ko vậy?

        1. Luân Trần Admin

          1. Coi như các bước trên không có tác dụng.
          2. Mình không có giải pháp nào cả. Mình không dùng cPanel do đó trường hợp này mình không tư vấn cụ thể được, bạn phải tự mày mò thôi.

  15. Minh 20

    Hic, mình cài giống y và kiểm tra memcache chạy có uptime rồi. Vậy mà vào wordpress w3 total cache ko thấy Memcache sáng lên để chọn.

    Cài lại memcache theo hướng dẫn của W3 total tại : /wp-admin/admin.php?page=w3tc_install
    cũng không thấy memcache sáng lên để chọn.

    Hic, nhọ. Luân có kinh nghiệm giúp mình với?? thanks

  16. Vũ Hoàn 4

    @Luân Trần cho mình hỏi chút về VPS đã cài Cpanel 11
    Thì có cài thêm được memcached nữa ko ?
    Nếu ko thì mình có thể cài hệ thống cache nào khác ko ?

    1. Luân Trần Admin

      Mình thấy mấy nhà cung cấp hosting, dùng cPanel có hỗ trợ kích hoạt memcached đó (vd như Hawk Host chẳng hạn). Bạn thử tìm hiểu kĩ xem.

      1. Vũ Hoàn 4

        Ý mình là: Centos mình đã cài Cpanel 11 thì có thể cài thêm Memcached như hướng dẫn trên ko nhỉ? Hay là phải Centos mới tinh?

Comment của bạn

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