Mengapa kombo PHP / Apache melakukan begitu banyak gettimeofday
syscalls? Meskipun mereka cepat setiap panggilan adalah panggilan yang harus diperhitungkan.
Cepat strace -c -p [apache2 process id]
, berikan yang berikut:
Process 22294 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
98.52 0.010000 51 196 poll
1.48 0.000150 0 20752 gettimeofday
0.00 0.000000 0 94 7 read
0.00 0.000000 0 48 write
0.00 0.000000 0 96 32 open
0.00 0.000000 0 75 close
0.00 0.000000 0 6 chdir
0.00 0.000000 0 766 time
0.00 0.000000 0 2 chmod
0.00 0.000000 0 56 10 access
Panggilan 20 ribu itu membuatku khawatir. Adakah yang mau menjelaskan ini?
apache-2.2
php
Gekkie
sumber
sumber
Jawaban:
Gettimeofday sebagian besar dipanggil oleh Apache untuk mencatat entri dalam file-debug. Juga beberapa modul menggunakan gettimeofday. Jadi tidak ada yang perlu dikhawatirkan.
EDIT: Saya melakukan beberapa penggalian kode sumber php dan menghasilkan hasil sebagai berikut: Sebagian besar fungsi php terkait waktu akan menggunakan waktu sistem. Karena mereka menggunakan waktu sistem, gettimeofday akan banyak dipanggil jadi jika Anda ingin mengurangi panggilan, kurangi fungsi terkait waktu Anda.
Saya harus berkomentar bahwa fungsi lain juga membuat gettimeofday-calls. Sebagai contoh jika Anda menggunakan php_session_start, ini akan (kadang-kadang, bergantung pada beberapa parameter seperti jika sesi baru, ...) melakukan panggilan ke php_combined_lcg yang pada gilirannya akan membuat panggilan ke lcg_seed jika tidak ada nilai seed diset ke dapatkan nomor acak semu. Dan lcg_seed akan melakukan panggilan gettimeofday. Ingatlah ini.
sumber
xdebug
diinstal, itu juga bisa menjadi produk sampingannya.Saya telah menemukan bahwa mengaktifkan modul php, xdebug, menyebabkan strace melaporkan beberapa
gettimeofday
panggilan.sumber
Setiap proses yang membutuhkan cap waktu panggilan gettimeofday, sehingga sulit untuk mengetahui apakah itu normal atau tidak.
Sebagai contoh, Ini bisa berupa modul yang membuat log, modul yang memeriksa waktu ... Bahkan, dalam kasus Anda, untuk mengetahui mengapa ada begitu banyak gettimeofday, nonaktifkan modul apache yang dapat bertanggung jawab untuk memanggil gettimeofday. Mungkin ada terlalu banyak menulis ke banyak file log yang terletak di folder yang berbeda.
sumber