Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Sepenuhnya Memahami PDO ATTR_PERSISTENT

sudut pandang Apache

Apache memiliki satu proses induk. Proses ini membuat proses anak yang akan menangani setiap permintaan yang datang ke server web. Jumlah awal proses anak yang dimulai saat server web dimulai dikonfigurasi oleh StartServers direktif dalam konfigurasi Apache. Jumlahnya naik sesuai kebutuhan dengan peningkatan jumlah permintaan yang mengenai server web hingga ServerLimit tercapai.

PHP dan koneksi persisten

Jika PHP (dijalankan sebagai mod_php, karena CGI semua sumber daya dibebaskan pada akhir eksekusi skrip) sekarang diperintahkan untuk membuat koneksi persisten dengan database untuk permintaan, koneksi ini akan ditahan bahkan setelah skrip selesai. Koneksi sedang hold adalah koneksi antara proses anak apache yang permintaannya ditangani oleh dan server database dan dapat digunakan kembali oleh permintaan apa pun yang sedang ditangani oleh proses anak yang tepat ini.

Jika, untuk beberapa alasan (jangan tanya saya persis mengapa), proses anak diduduki lebih lama dari permintaan yang sebenarnya dan permintaan lain masuk, proses Apache induk mengarahkan permintaan ini ke proses anak (baru) yang mungkin belum dibuat koneksi ke database hingga saat ini. Jika harus selama eksekusi skrip, itu memunculkan SID seperti yang Anda amati. Sekarang ada dua koneksi yang dipegang oleh dua proses anak yang berbeda dari apache.

Perlu diingat bahwa...

Penting untuk diketahui, bahwa ini juga dapat menyebabkan banyak masalah. Jika ada loop tak berujung atau transaksi yang dibatalkan atau kesalahan lainnya yang mungkin tidak terduga selama eksekusi skrip, koneksi diblokir dan tidak dapat digunakan kembali .Juga bisa terjadi bahwa semua koneksi database yang tersedia digunakan, tetapi ada proses anak lain dari server apache yang mencoba mengakses database. Proses ini diblokir untuk sementara waktu hingga koneksi dibebaskan oleh database atau apache (batas waktu atau secara sukarela dengan penghentian). Informasi lebih lanjut tentang topik ini di halaman ini:http://www.php.net/manual/en/features.persistent-connections.php

Saya harap saya mendapatkan semua yang telah kami diskusikan dalam percakapan komentar kami diringkas dengan benar dan tidak melupakan apa pun. Jika demikian, tolong beri saya petunjuk dan saya akan menambahkannya. :)

Sunting:

Saya baru saja selesai membaca artikel @MonkeyZeus yang disebutkan dalam komentar ini. Ini menjelaskan proses yang saya rangkum di atas dan memberikan informasi yang berguna tentang cara mengoptimalkan server apache Anda untuk bekerja lebih baik bersama dengan koneksi yang persisten. Ini dapat digunakan dengan atau tanpa backend database Oracle, meskipun demikian. Anda harus melihat:http://www.Oracle.com/technetwork/articles/coggeshall-persist-084844.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memperbaiki kesalahan ORA-65096 saat membuat tes otomatis di Django menggunakan Oracle

  2. ORA-12519 TNS:tidak ditemukan penangan layanan yang sesuai

  3. Oracle Sequence nextval adalah lompatan nomor bolak-balik

  4. Oct2014CPU Menghancurkan Desktop ArcGIS

  5. Berapa ukuran default input varchar2 ke prosedur tersimpan Oracle, dan dapatkah diubah?