Eror REST API Pada WordPress dengan nginx Unit

Error cURL error 28: Operation timed out after 10001 milliseconds with 0 bytes received menunjukkan bahwa ada masalah dengan koneksi ke endpoint REST API WordPress. Ini biasanya disebabkan oleh satu atau lebih dari alasan berikut:

1. Masalah Koneksi Jaringan

  • Timeout: Koneksi ke server atau ke endpoint API mengalami timeout karena terlalu lama merespons. Ini bisa disebabkan oleh masalah jaringan, seperti latensi tinggi, masalah DNS, atau koneksi yang lambat antara server dan klien.
  • Firewall atau Security Software: Firewall atau perangkat lunak keamanan lainnya mungkin memblokir koneksi ke API atau memperlambatnya cukup sehingga menyebabkan timeout.

2. Pengaturan Timeout di NGINX Unit

  • Idle Timeout: Pengaturan idle_timeout pada NGINX Unit mungkin terlalu rendah, yang menyebabkan koneksi berakhir sebelum permintaan selesai diproses.
  • Max Execution Time: Waktu eksekusi maksimum untuk skrip PHP mungkin terlalu rendah, yang menyebabkan skrip terputus sebelum selesai.

3. Masalah Konfigurasi Server

  • Misconfiguration di NGINX Unit: Kesalahan konfigurasi pada NGINX Unit, seperti pengaturan buffer yang terlalu kecil, juga dapat menyebabkan timeout. Selain itu, jika server tidak dioptimalkan untuk menangani sejumlah besar permintaan, ini bisa menyebabkan server overload dan koneksi timeout.
  • SSL/TLS Handshake Delay: Jika menggunakan HTTPS, mungkin ada penundaan selama proses handshake SSL/TLS yang menyebabkan timeout.

4. Masalah WordPress atau Plugin

  • Plugin yang Buruk: Plugin yang berinteraksi dengan REST API atau plugin caching yang salah konfigurasi dapat menyebabkan API tidak merespons atau lambat.
  • Masalah Database: Kinerja database yang buruk dapat menyebabkan REST API menjadi lambat dalam merespons permintaan.

5. Masalah DNS

  • Resolusi DNS Lambat: Jika resolusi DNS lambat atau ada masalah dengan server DNS yang digunakan, hal ini dapat menyebabkan keterlambatan dalam permintaan REST API dan akhirnya menyebabkan timeout.

Langkah-Langkah Pemecahan Masalah

  1. Periksa Log Server:
    • Periksa log NGINX Unit, log PHP, dan log WordPress untuk melihat apakah ada pesan kesalahan yang lebih spesifik yang dapat membantu mengidentifikasi masalah.
  2. Tingkatkan Pengaturan Timeout di NGINX Unit:
    • Coba tingkatkan nilai idle_timeout dalam konfigurasi NGINX Unit. Ini bisa dilakukan dengan menyesuaikan file JSON konfigurasi NGINX Unit Anda.
    Contoh:
{
  "processes": {
    "max": 10,
    "spare": 5,
    "idle_timeout": 60
  }
}

Apply the new configuration:

sudo curl -X PUT --data-binary @new_config.json \
--unix-socket /var/run/control.unit.sock http://localhost/config/

3. Periksa Pengaturan max_execution_time di PHP:

  • Tingkatkan max_execution_time di konfigurasi PHP jika perlu. Anda bisa melakukannya di php.ini atau melalui konfigurasi NGINX Unit.

Contoh:

max_execution_time = 120

4. Cek Plugin WordPress:

  • Nonaktifkan sementara semua plugin dan kemudian aktifkan satu per satu untuk mengidentifikasi apakah ada plugin yang menyebabkan masalah.

5. Optimalkan Database WordPress:

  • Pastikan bahwa database WordPress Anda dioptimalkan dan tidak ada query lambat yang menyebabkan masalah kinerja.

6. Cek DNS:

  • Coba lakukan ping atau traceroute ke hostname yang digunakan dalam REST API untuk memastikan tidak ada masalah dengan resolusi DNS.
ping wp-i.com

7. Debugging:

  • Aktifkan WP_DEBUG dan WP_DEBUG_LOG di wp-config.php untuk log kesalahan yang lebih detail.
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

Jika semua langkah di atas masih belum menyelesaikan masalah, Anda mungkin perlu memeriksa konfigurasi server secara lebih mendalam, termasuk masalah terkait jaringan atau perangkat keras.

Leave a Comment