Konfigurasi PHP-FPM agar menggunakan Unix Socket

Pada umumnya kalau menggunakan PHP-FPM maka yang dipakai untuk mendengarkan secara default permintaan proses PHP adalah lewat port TCP/IP (umumnya di 127.0.0.1:9000), ya masih di localhost hitungannya. Tapi sebenarnya ada satu setting yang bisa meningkatkan performa pengolahan proses PHP-FPM yakni dengan menggunakan Unix Socket. Jadi cukup diganti saja. Caranya sendiri cukup mudah kok. 🙂

Bagaimana cara menukar port TCP/IP menjadi Unix Socket pada PHP FPM? Pertama mari kita edit konfigurasi PHP-FPM, nama filenya bisa berbeda tergantung apa distro Linux dan bagaimana anda menginstallnya. Cukup sering dinamakan www.conf atau php-fpm.conf.

nano /etc/php5/fpm/pool.d/www.conf

atau

nano /usr/local/etc/php-fpm.conf

Atau bisa juga tempatnya lain, silahkan diadaptasikan.

Langkah selanjutnya ubah:

listen = 127.0.0.1:9000

menjadi

listen = /var/run/php5-fpm.sock

atau

listen = /tmp/php5-fpm.sock

Aslinya sih sudah selesai dari sisi PHP-FPM, berikutnya saya lanjutkan untuk konfigurasi Nginx. Silahkan edit konfigurasi virtual hostnya, bisa ditemukan di/etc/nginx/sites-available/ atau lokasi lainnya jadi tinggal dicari.

Yang perlu dimodifikasi kodenya biasanya ada dalam blok pemroses PHP dan gantikan:

fastcgi_pass   127.0.0.1:9000;

menjadi

fastcgi_pass unix:/var/run/php5-fpm.sock;

atau

fastcgi_pass   unix:/tmp/php5-fpm.sock;

Setelah itu silahkan reload konfigurasi PHP-FPM juga Nginx:

service php5-fpm reload && service nginx reload

Kalau tidak anda lakukan nanti yang terjadi adalah error 502 Bad Gateway.

Untuk lokasi Unix Socket saya berikan 2 karena memang bisa berbeda. Lagi, ini memang tergantung bagaimana anda menginstallnya. Oh ya, walaupun saya katakan performa Unix Socket lebih bagus dari port TCP/IP bukan berarti perbedaannya signifikan. Selisihnya akan terasa kalau trafiknya besar dan masih menggunakan satu server. Kalau sudah disebar ke beberapa server akan lebih baik memanfaatkan sistem TCP/IP.

Selesai dan semoga bermanfaat. 🙂

17 Comments

  1. mas chandra,
    kode php5-fpm.sock itu untuk debian dan ubuntu ya?
    kalau centos apa betul seperti ini kodenya :
    /var/run/php-main.socket
    kode diatas bisa untuk semua jenis php kan mas, mungkin beda antara versi 5.6 dan 7.

    1. Eh masa mbak? Saya mendasarkan di CentOS 7nya DigitalOcean ini. Pakai PHP 5.6 sih.

      Kalau PHP 7.0 saya malah ketemu yang di /var/run/php/php7.0-fpm.sock;. Trims infonya mbak.

  2. php-fpm.service - The PHP FastCGI Process Manager
       Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
       Active: active (running) since Sat 2017-01-21 12:10:21 UTC; 2 days ago
     Main PID: 774 (php-fpm)
       Status: "Processes active: 0, idle: 35, Requests: 17952, slow: 0, Traffic: 0req/sec"
       CGroup: /system.slice/php-fpm.service
               ├─  774 php-fpm: master process (/etc/php-fpm.conf)
               ├─26837 php-fpm: pool www
               ├─26872 php-fpm: pool www
               ├─26873 php-fpm: pool www
               ├─26907 php-fpm: pool www
               ├─26908 php-fpm: pool www
               ├─26909 php-fpm: pool www
               ├─26910 php-fpm: pool www
               ├─26933 php-fpm: pool www
               ├─26934 php-fpm: pool www
               ├─26935 php-fpm: pool www
               ├─26936 php-fpm: pool www
               ├─26937 php-fpm: pool www
               ├─26957 php-fpm: pool www
               ├─26958 php-fpm: pool www
               ├─26959 php-fpm: pool www
               ├─26960 php-fpm: pool www
               ├─26961 php-fpm: pool www
               ├─26973 php-fpm: pool www
               ├─26974 php-fpm: pool www
               ├─26975 php-fpm: pool www
               ├─26976 php-fpm: pool www
               ├─26977 php-fpm: pool www
               ├─27322 php-fpm: pool www
               ├─27328 php-fpm: pool www
               ├─27329 php-fpm: pool www
               ├─27377 php-fpm: pool www
               ├─27378 php-fpm: pool www
               ├─27379 php-fpm: pool www
               ├─27380 php-fpm: pool www
               ├─27387 php-fpm: pool www
               ├─31719 php-fpm: pool www
               ├─31720 php-fpm: pool www
               ├─31721 php-fpm: pool www
               ├─31751 php-fpm: pool www
               └─31752 php-fpm: pool www
    
    Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

    Di cek setatus keluarnya seperti itu, itu kenapa ya mas?

    1. Itu… sehat wal afiat mas. Tidak ada masalah, cuma karena ga ada trafik ya nganggur semua mesin PHPnya. Itu banyak sekali mas workernya? Berapa calon trafiknya?

  3. Trafik saya juga ga ngerti mas …. :LoL . ampun mas ini saya memang baru nol masalah beginian, ya sudah lah biarkan saja hehehe

    1. Jumlah pengunjung mas maksud saya. 🙂 Itu kalau workernya terlalu banyak dan ga imbang sama spesifikasi server bisa boros memori minimal.

  4. Jumlah pengunjungnya cuma saya saja mas, cuma sering saya klik aja buat tes,
    dan sekarang malah banyak error mas rasa rasanya pengen mau menyerah belajar beginian, sudah capek begadang terus mas

    1. Saya paham mas. 😀 Dulu saya pertama kali belajar juga gagal total, akhirnya ngambek sendiri sebulan stop ngurusin. Hehe. 🙂 Kadang pikiran harus fresh mas, ga bisa dipaksakan malah stres.

      Ada solusi yang lebih gampang mas, ambil jalan tengahnya install EasyEngine.

  5. Ini misalnya saya rebuild malah ga cepet bisa ya mas? apakah begitu?
    saya gagal pada bagian https sekaligus diarahkan ke www

  6. Saya pernah install cenmintmod mengikuti cara disini mungkin menurut saya itu sama dengan EasyEngine, dan ternyata yang sering disebut sebut oleh komentator disini termasuk mas Candra juga, ee (tanpa K) hahahaha… adalah EasyEngine, saya baru tahu sekarang.
    cenmintmod 5 menit langsung saya hapus karena melihat installan begitu banyak saya jadi binggung yang di install itu sebenarnya perlu atau tidak, dan saya sekarang belajar manual aja mungkin ilmunya lebih bagus.

    1. Centminmod menurut saya pribadi lebih bagus daripada EasyEngine mas, tapi memang lebih rumit sedikit.

      Pakai EE sudah cukup mas, tinggal install, tambahkan websitenya, dan aktifkan HTTPS. Mudah kok.

      Santai saja mas belajarnya. Sambil jalan dan kalau perlu saja malah enjoy. 😀

  7. Tanya donk, php-fpm suka stop sendiri sehingga menyebabkan error 502 bad gateway

    Ada log php fpm gak ya biar tau dia stop karena apa?

    Terima kasih

    1. Mas ini pakai distro apa? Install PHP versi?

      Kalau pakai asumsi coba eksekusi ini:

      tail -50 /var/log/php5/fpm.log

      Silahkan dicopas biar dipelajari bersama – sama. 😀

  8. Klo supaya pake tcp lbh dari 1 server gmn ?
    Kemaren ane error

    2018/01/05 20:04:34 [crit] 821#0: *16707 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream

    Pas trafiik mulai naik

    1. Itu ga pakai TCP mas, pakai Unix Socket metodenya. Kemungkinan bermasalah karena tingginya I/O. Coba ganti VPS ke SSD minimal.

Tinggalkan Balasan ke shafira Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *