Masalah teratasi setelah kami mulai membangun kembali koneksi ke database. Kami menggunakan sequel
pada proyek, dan Penumpang menangani masalah itu sendiri hanya ketika ActiveRecord digunakan.
Untuk memperluasnya, secara default Penumpang menggunakan pemijahan pintar untuk aplikasi ruby. Ini pertama kali memunculkan proses preloader, yang memuat kerangka kerja dan semua perpustakaan. Setelah itu proses preloader memunculkan proses pekerja saat dibutuhkan, yang menangani permintaan. Saat proses spawning worker, semua deskriptor file diwarisi dari proses preloader. Jadi jika Anda tidak membangun kembali koneksi ke database, semua proses pekerja berbagi satu, dibuat oleh preloader. Yang mengarah ke segala macam perilaku aneh. Permintaan suka terlalu lama.
Sebelum itu, kami juga memindahkan penanganan koneksi WebSocket ke proses terpisah. Namun, tidak yakin apakah itu berkontribusi pada masalah.
Selengkapnya di sini:
Putuskan Hubungan Jika Menggunakan Forking Webserver dengan Kode Preloading
Berbagi deskriptor file yang tidak disengaja
Menjalankan server Action Cable pada host dan port yang sama, di bawah sub-URI