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. hoang 9

    mình cài cả php 5.5 và 5.6 giờ muốn xóa 1 cái đi thì làm thế nào? vì mình cài xong hết rồi cũng bị lỗi không hiện ra memcached nên nghĩ là do cài cả 2 php. hic

    1. Luân Trần Admin

      Bạn xem lại hướng dẫn cài đặt như thế nào thì chạy lại lệnh đó, nhưng thay vì yum install giờ sẽ là yum remove

  2. hoang 9

    của mình kiểm tra thì nó báo cái này
    New Relic
    PHP version: Not supported: 5.6.6. Supported versions are 5.2.x, 5.3.x, 5.4.x.
    Operating System: Supported
    Web Server: Not Supported. (nginxcgi-fcgi See NewRelic Requirements page.)
    mình đang cài php 5.6,
    liệu memcached của mình không hỗ trợ 5.6 không?

      1. hoang 9

        thanks bạn, mình cài lại w3 total thì nó hiện memcached ra rồi.
        Cái New Relic là gì mình cũng không biết, tại lúc check thì nó báo thế 🙂

  3. HUNG MANH 3

    các anh chị cho em hỏi em cài xong centos 6.6.
    em vào quyền root gõ câu lện bh yum install httpd em toàn bị lỗi loaded plugin là sao ạ
    cảm ơn các anh chị ạ

  4. thao 5

    yum –enablerepo=remi,remi-php55 install php-pecl-memcached php-pecl-memcache
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirrors.viethosting.vn
    * epel: mirrors.vinahost.vn
    * extras: mirrors.viethosting.vn
    * remi: remi.kazukioishi.net
    * remi-php55: remi.kazukioishi.net
    * rpmforge: mirror-fpt-telecom.fpt.net
    * updates: mirrors.viethosting.vn
    Setting up Install Process
    No package php-pecl-memcached available.
    No package php-pecl-memcache available.
    Error: Nothing to do

    cài dc memcache rồi nhưng module trên php không dc bác ah 🙁

    1. Luân Trần Admin

      Cái này do VPS nhận repo remi ở kazukioishi.net, mà thằng này ko có module trên. Mình chịu thua rồi 🙂

  5. Đức Hải 13

    Tới thời điểm này phải nói là cám ơn Luân rất nhiều! Vì nếu không có Blog này chắc mình không thể nào cài nổi 1 VPS để sử dụng với một người ko biết gì về VPS!

    Qua thông tin http://chiasecoupon.com mình đã đăng ký 1 gói của Vultr và chắc sẽ tiếp tục order sử dụng sau này. Đúng là dùng VPS là khác hẳn so với Shared host về mọi mặt về chất lượng

    Hiện mình đã cài thành công + cài đặt site mới chạy trên VPS ok rồi!

    Và đang theo dõi bài này để cài memcached, tuy nhiên con VPS đang dùng trên Vultr của mình version PHP chỉ mới là v5.3.3.

    Luân có thể chỉ cho mình cách hay lệnh để update version qua SSH cho php lên v5.5 hay 5.6 được không?

    Cám ơn nhiều!

  6. thao 5

    bạn xài control panel gì hay chỉ xài webserver thôi cho thêm thông tin nhé bạn vì nếu có cpanel upload sẽ dể nhẹ hơn nhiều do có scripts sẵn

  7. Đức Hải 13

    Mình dùng ZOC7 Terminal (trial) để chạy các lệnh SSH, còn panel quản trị tài khoản host thì dùng Zpanel bạn!

    1. Luân Trần Admin

      ZPanel không upgrade lên được nhé, die server ngay.

      Còn nếu bạn cài đặt server thủ công muốn upgrade thì phải thông qua repo remi, ví dụ khi cài HocVPS Script:

      yum --enablerepo=remi,remi-php55 upgrade php-fpm //PHP 5.5
      yum --enablerepo=remi,remi-php56 upgrade php-fpm //PHP 5.6
  8. Đức Hải 13

    Vì lý do nhu cầu sử dụng nên không dùng giao diện HocVPS Script để quản trị được mà mình phải dùng zpanel!

    Và để update thủ công qua repo remi thì phải dùng lệnh nào?

    Thanks!

    1. Luân Trần Admin

      ZPanel không update lên PHP bằng lệnh được bạn ạ. Cả hệ thống sẽ chết ngay.

  9. quocdong 1

    Mình làm theo hướng dẫn, đã cài được memcached, nhưng giờ gặp lỗi không login được bằng FTP, mọi người giúp mình với đã thử fix nhièu cách

  10. Thanh 6

    Bạn Luân ơi, memcached phiên bản mình đang dùng là 1.4.4 (Cài đặt theo hướng dẫn của bạn) mới nhất là 1.4.24. Mình có nên update bản mới này không? Và update như thế nào? Cảm ơn Luân 🙂

    1. Luân Trần Admin

      Bạn chạy lệnh tương ứng, thay install bằng upgrade là xong.
      Ví dụ: yum upgrade memcached

      Upgrade cũng được bạn ạ, tuy nhiên tìm hiểu trước xem có vấn đề gì không nhé 😀

  11. HTH 3

    Chào anh Luân, em sau khi cài đặt thêm PHP module (PHP 5.6), trong quá trình cài đặt có xung đột với php Opcache, cleanup 1 số thứ. Chạy xong sau đó em restart php-fpm thì bị start [FAILED]

    Hiện tại memcached chạy tốt với w3 total cache nhưng mà website lại không bật được session(cứ session_start() là bị lỗi), php Opcache với phpMyAdmin cũng hư luôn, anh có biết cách khắc phục không? em làm đúng theo mọi hướng dẫn của anh

      1. HTH 3

        Em thấy trong Opcached báo lỗi:
        Warning: Division by zero in /home/www.*****.com/private_html/op.php on line 163

        Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given in /home/www.aduhaivl.com/private_html/op.php on line 177

        Warning: array_merge(): Argument #1 is not an array in /home/www.*******.com/private_html/op.php on line 184

        phpMyAdmin thi 2 báo: Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

        Trên trang web là lỗi:
        Warning: session_start(): open(/var/lib/php/session/sess_39sd9cen1f58jvinil8o3qqcb0, O_RDWR) failed: Permission denied (13) in /home/www.*****.com/public_html/wp-content/themes/twentytwelve/header.php on line 1

        Warning: Unknown: open(/var/lib/php/session/sess_39sd9cen1f58jvinil8o3qqcb0, O_RDWR) failed: Permission denied (13) in Unknown on line 0

        Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

        1. HTH 3

          Giải quyết được rồi anh, nhưng mà zend Opcache vẫn không chạy được, em remove hết, sau đó cài đặt lại Zend Opcache nhưng cài đặt xong, restart php-fpm thì nó failed

          [03-Oct-2015 11:45:14] NOTICE: PHP message: PHP Warning: Module ‘Zend OPcache’ already loaded in Unknown on line 0
          [03-Oct-2015 11:45:14] NOTICE: PHP message: PHP Warning: Zend OPcache: module registration failed! in Unknown on line 0
          *** glibc detected *** /usr/sbin/php-fpm: free(): invalid pointer: 0x00007f861faddaf8 ***
          …..
          ….
          Em check logs file thì chúng hoàn toàn rỗng, anh có thể chỉ em cách khắc phục không?

          1. Luân Trần Admin

            Lỗi này do PHP include 2 lần module Opcache. Bạn check trong thư mục /etc/php.d/ có thể có 2 file opcache.ini đấy.

  12. quangduy 3

    Ad ơi cho mình hỏi cấu hình tối thiểu để cài dc memcached là bao nhiêu vậy?
    Thanks ad nhé ^^

    1. Luân Trần Admin

      Do nó lưu trên RAM, nên bạn tự tính xem. Nếu site nhiều dữ liệu, cache nhiều thì cần dung lượng RAM nhiều. Tốt nhất nên từ 768MB trở lên.

  13. Nate Love 10

    Của mik kiểm tra nó ra thế này có dc ko luân

    accepting_conns 1
    auth_cmds 0
    auth_errors 0
    bytes 0
    bytes_read 7
    bytes_written 0
    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 134217728
    listen_disabled_num 0
    pid 2124
    pointer_size 64
    rusage_system 0.008998
    rusage_user 0.000000
    threads 4
    time 1444723533
    total_connections 11
    total_items 0
    uptime 10
    version 1.4.4

  14. Long 4

    Cài memcached mà bị báo lỗi như này thì phải làm sao Luân nhỉ?
    —————–
    Error: Package: memcached-1.4.22-1.el6.remi.x86_64 (remi)
    Requires: libsasl2.so.2()(64bit)

      1. Long 4

        Mình search thấy topic đó và làm theo từ hôm nọ rồi mà không được. Có nên cài lại về centos 6 không nhỉ, mình chọn bản 7 64 bit và không thể tìm cách nào cài được memcached chứ

          1. Long 4

            Okie Luân.

            Mình cũng đang cài lại bản 6 rồi. Bản 64 bit với 32 bit chắc cũng như nhau thôi nhỉ.

            Tks Luân đã hỗ trợ nhé.

  15. hung 13

    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
    mình cài memcached thế này luân ơi

      1. quang 14

        7 hay 6 gì cũng lỗi như trên a luân ơi, em xóa mấy cái vps rồi cài lại vẫn lỗi y chang . thử mọi cách k đc

          1. Luân Trần Admin

            Khó nhỉ, mình cài suốt rồi có sao đâu, bạn kiểm tra lại cẩn thận từng câu lệnh nhé.

  16. 2

    Starting memcached: chown: invalid user: `memcached\r’
    to switch toe user memcached
    [FAILED]

    Em Start lại nó báo lỗi này thì sửa ở đâu z a ?

      1. HungDang 4

        Tình hình là bạn phải kiểm tra lại file :
        /etc/sysconfig/memcached

        USER=”memcached” <— cái này mà sai là khổ lắm

  17. Minh Tuan 6

    –> Running transaction check
    —> Package memcached.x86_64 0:1.4.22-1.el6.remi will be installed
    –> Processing Dependency: libsasl2.so.2()(64bit) for package: memcached-1.4.22-1.el6.remi.x86_64
    –> Processing Dependency: libevent-2.0.so.5()(64bit) for package: memcached-1.4.22-1.el6.remi.x86_64
    –> Running transaction check
    —> Package libevent.x86_64 0:2.0.21-4.el7 will be installed
    —> Package memcached.x86_64 0:1.4.22-1.el6.remi will be installed
    –> Processing Dependency: libsasl2.so.2()(64bit) for package: memcached-1.4.22-1.el6.remi.x86_64
    –> Finished Dependency Resolution
    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

    Em cài vài lần rồi, xóa VPS đi rồi cài lại vẫn bị không hiểu nữa. Anh Luân xem giúp em với.

      1. Minh Tuan 6

        Em dùng centos 7 của vulrt. Em vừa cài lại centos 6 thì dùng được. Chạy khá nhanh 😀 Cảm ơn anh Luân.

Comment của bạn

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