In letzter Zeit habe ich das Gefühl, dass apt-get update auf einigen Servern viel langsamer läuft als auf anderen.
xxx@xxx:/usr/lib/php5/20121212$ sudo apt-get update
Ign http://downloads-distro.mongodb.org dist InRelease
Einige Server werden ausgeführt apt-get update
und in weniger als einer halben Sekunde wird die zweite Zeile oben angezeigt. Während andere Server etwa 5 Sekunden brauchen, um die zweite Zeile anzuzeigen.
Ich sudo strace apt-get update
stelle fest, dass langsame Server bei unten stehender Taste mehrere Sekunden lang anhalten
open("/etc/apt/sources.list", O_RDONLY) = 4
read(4, "# \n\n# deb cdrom:[Ubuntu-Server 1"..., 8191) = 3488
pipe([5, 6]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f0ab30f3a50) = 30800
close(6) = 0
fcntl(5, F_GETFL) = 0 (flags O_RDONLY)
fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0ab2f68000
lseek(5, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
read(5, "i386\n <----------------- here
nach einigen Sekunden geht es weiter wie unten
, 4096) = 5
read(5, "", 4096) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=30800, si_status=0, si_utime=307, si_stime=167} ---
close(5) = 0
munmap(0x7f0ab2f68000, 4096)
Die Ausgaben sind für alle Server nahezu gleich.
wie kann man das Problem lösen?
Antwort1
Endlich hat mein Freund das Problem herausgefunden.
Es wird durch das Limit für geöffnete Dateien verursacht, das wir für unseren Systembenutzer sehr hoch eingestellt haben. Es ist ein Fehler von Ubuntu.
Wir legen ein viel kleineres Limit für geöffnete Dateien fest, damit ein Apt-get-Update schneller wird.