Задержка Генерации Страницы В Следствии Блокирующей Операции Скрипта

С "головой" ушел в анализ производительности сайта, в связи с чем начал "тиранить" хостера по поводу скорости ответа сервера.

И вот что ответил хостер:

------------------------------------------

При обращении к сайту наблюдается существенная задержка. Насколько мы можем судить, задержка возникает на этапе генерации страницы скриптами вашего сайта.

Time total: 241.893 sec

Lookup time: 0.125 sec

Pretransfer time: 0.559 sec

Starttransfer time: 241.731 sec

HTML generating time: 241.172 sec

Судя по трассировке скрипта, задержка возникает в следствии блокирующей операции скрипта при обращении к адресу 172.217.20.170, от которого, в некоторых случаях не формируется ответа. Насколько мы можем судить, это один из сервисов компании Google. В данной ситуации рекомендуем проанализировать работу скрипта:

socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 9
fcntl(9, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(9, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
connect(9, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("172.217.20.170")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=9, events=POLLOUT|POLLWRNORM}], 1, 1666) = 1 ([{fd=9, revents=POLLOUT|POLLWRNORM}])
getsockopt(9, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 12
fcntl(12, F_GETFL)                      = 0x2 (flags O_RDWR)
fcntl(12, F_SETFL, O_RDWR|O_NONBLOCK)   = 0
getpeername(12, 0x7ffc00266c60, [112])  = -1 ENOTCONN (Transport endpoint is not connected)
fcntl(9, F_GETFL)                       = 0x802 (flags O_RDWR|O_NONBLOCK)
fcntl(9, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
getpeername(9, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("172.217.20.170")}, [16]) = 0
close(12)                               = 0
getpeername(9, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("172.217.20.170")}, [16]) = 0
sendto(9, "\26\3\1\0\254\1\0\0\250\3\3\35\357\364&\331fwo\341HsH\375\216N\261\236:J\252\233\36\317:\321\364V\304\306\313$\322\0\0.\300+\300/\0\236\0\234\300\n\300\24\0009\0k\0008\0005\0=\300\t\300\23\0003\0g\0002\0/\0<\0\5\0\4\0\26\0\23\0\n\1\0\0Q\0\0\0\30\0\26\0\0\23maps.googleapis.com\377\1\0\1\0\0\n\0\10\0\6\0\27\0\30\0\31\0\v\0\2\1\0\0\r\0\32\0\30\4\3\5\3\6\3\2\3\4\1\5\1\6\1\2\1\4\2\5\2\6\2\2\2", 177, 0, NULL, 0) = 177
recvfrom(9, 0x1e70160, 5, 0, 0, 0)      = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=9, events=POLLIN|POLLPRI}], 1, 5000) = 1 ([{fd=9, revents=POLLIN}])
recvfrom(9, "\26\3\3\0W", 5, 0, NULL, NULL) = 5
recvfrom(9, "\2\0\0S\3\3Z\31]\34\224[y\351\315q6S\232\266L\335\267)\236\260YVkUQ\3378p\234\374\215n \365\\x\276\0w9\256\355\342\2301\344\266\313\364\5l\t!fm\316\326\303N#='\276\273Y\300+\0\0\v\377\1\0\1\0\0\v\0\2\1\0", 87, 0, NULL, NULL) = 87
recvfrom(9, "\26\3\3\v\331", 5, 0, NULL, NULL) = 5
recvfrom(9, "\v\0\v\325\0\v\322\0\4\0340\202\4\0300\202\3\0\240\3\2\1\2\2\10F\327\232\300\263\366\364\3340\r\6\t*\206H\206\367\r\1\1\v\5\0000I1\v0\t\6\3U\4\6\23\2US1\0230\21\6\3U\4\n\23\nGoogle Inc1%0#\6\3U\4\3\23\34Google Internet Authority G20\36\27\r171101135828Z\27\r180124133100Z0j1\v0\t\6\3U\4\6\23\2US1\0230\21\6\3U\4\10\f\nCalifornia1\0260\24\6\3U\4\7\f\rMountain View1\0230\21\6\3U\4\n\f\nGoogle Inc1\0310\27\6\3U\4\3\f\20*.google"..., 3033, 0, NULL, NULL) = 3033
brk(0x1eb7000)                          = 0x1eb7000
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(10, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/etc/pki/nssdb/cert9.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(10, {st_mode=S_IFREG|0644, st_size=9216, ...}) = 0
lseek(10, 24, SEEK_SET)                 = 24
read(10, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
fcntl(10, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
recvfrom(9, "\26\3\3\0\224", 5, 0, NULL, NULL) = 5
recvfrom(9, "\f\0\0\220\3\0\27A\4\4TvEcu\227f\252y=\241\322\\\337>\340\366T\226\266\370\332\20\336h\\\5Z\345\261Hb(\36\367l;\224:\300?\1i\f\350o3\24\332\266\326\243sL\333g&&\341\366\34\327\32\4\3\0G0E\2!\0\2001\271$\336\334\310N\357c\231]\216/V\232\336\203\347K\220\373\t\31\323\26383\223\353\306\230\2 P\322\31\225\235\v\242a\350\346xX\4\332\324\343\244\234\f\350|\n\27\10\330\204{\304\315(\240\270", 148, 0, NULL, NULL) = 148
recvfrom(9, "\26\3\3\0\4", 5, 0, NULL, NULL) = 5
recvfrom(9, "\16\0\0\0", 4, 0, NULL, NULL) = 4
sendto(9, "\26\3\3\0F\20\0\0BA\4\312\306'|\21\7\30\t\336\207\334Q\277\35263B\223\207z=\267\311mv\353u.\257\216\3im{z!\357\355\35=>\20\204\7\37\210\351\34p\300\215\26\213\325\221\30:\272\26:\371\365\237\264\24\3\3\0\1\1\26\3\3\0(\0\0\0\0\0\0\0\0\255m~\207\202X\317\231\352\262\344\310F\203\247R\323^Q\203\21\34>#\31\2Z\241R\216\3209", 126, 0, NULL, 0) = 126
recvfrom(9, 0x1e70160, 5, 0, 0, 0)      = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=9, events=POLLIN|POLLPRI}], 1, 5000) = 1 ([{fd=9, revents=POLLIN}])
recvfrom(9, "\24\3\3\0\1", 5, 0, NULL, NULL) = 5
recvfrom(9, "\1", 1, 0, NULL, NULL)     = 1
recvfrom(9, "\26\3\3\0(", 5, 0, NULL, NULL) = 5
recvfrom(9, "\0\0\0\0\0\0\0\0\237\246\302\327\211r\204\200X\377(\233\335\3444\276\t\346\2554\347\336\216\217|\327\376\377\301\304\210/", 40, 0, NULL, NULL) = 40
sendto(9, "\27\3\3\0\270\0\0\0\0\0\0\0\1\5\2500\337\257Xk\1G\31Gp\267+.\17O\325\330P\376+#\4;ws7~ 1\263\26\17CH\266\357\244\200\"/\222\245\362i\22\200\372TO\376\244f\210\34xS\20rq\371\355H\261\205\243!\324K\"|\365\374\6\f\320s\206[)\374\232\33\205\240W\230s\201\352Ii\2\210\264\220`7\30\336\305\215\3239=\217iK\346\365\222Ub\313b\3675\265}\25\33\3176\325R\264]\267yA\37\0061R\242\343[f\3\301\242B\327\246\276\240\374-\213\200\227\210\33\250hVI\263\362\334#\320\225f\206f\334\353\234\341\235\301d\30J", 189, 0, NULL, 0) = 189
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)

------------------------------------------

А вот тут моей квалификации уже не хватает.

Из сервисов Гугла сайт использует капчу (штатную) и Геолокацию (модуль от SimtechDev).

Внимание, вопросы: что делает этот скрипт, что не так с ним и как свести к минимуму его пагубное влияние на скорость ответа сервера?

Заранее благодарен всем ответившим!

Доброго времени! Конечно так глобально не вникал в этот вопрос, но меня тоже напрягает данный вопрос!

Обращался к разработчикам, модуля SimtechDev и в итоге получил ответ, что вероятней всему виной мой хостинг, хотя хостер говорит обратное, что всему виной модуль!

Результат, был таким:

1.Модуль геолокации отключен!
Главная страница http://joxi.ru/8Anb8gyiqXEE9A

Страница категории http://joxi.ru/gmvlEQGCx8KDyA

2. Модуль Google Geolocation ВКЛЮЧЕН!

Главная страница http://joxi.ru/bmoJNM7tMwX0Gr
Страница категории http://joxi.ru/bmoJNM7tMwXwGr

Где искать правды я так и не понял...

И еще, замечал, что яндекс вебвизор иногда существующую страницу видит как страницу с 404 ошибкой с таким окончанием ( /index.php?dispatch=geolocation.my_location&id=my_location ) видимо это тоже относится к гео модулю.

http://joxi.ru/xAeB3xaiYaVv9r

Подождем комментарии разработчиков модуля.

Молчат пока разработчики.... 8)

Подтверждаю, модуль геолокации действительно замедляет ответ сервера в 2 раза. Не только на главной, но и на странице товара и категории.

Ошибку 404 я тоже получал, скопировал ссылку на товар в хроме, вставил в опере, увидел страницу 404.

Здравствуйте!

Мы начали изучение данного вопроса. Как только появятся какие-то новости, я отпишусь здесь.

Спасибо Олег!

Действительно нужный модуль, но почти каждый день в офисе, ставится на вопрос о его использовании ...

Мы начали изучение данного вопроса. Как только появятся какие-то новости, я отпишусь здесь.

Будем ждать информацию от вас.

Есть новости на эту тему?

Есть новости на эту тему?

Posted 30 November 2017 - 10:51 AM#7

Здравствуйте!

Мы начали изучение данного вопроса. Как только появятся какие-то новости, я отпишусь здесь.

Здравствуйте!

Мы внесли несколько изменений в модуль геолокации:

1. Теперь скрипты геолокации загружаются асинхронно.

2. Сделали редирект на главную с /index.php?dispatch=geolocation.my_location&id=my_location

3. Минифицировали скрипты, подключаемые нашим модулем

Релиз изменений запланирован на середину декабря.

Скажите, есть какие-либо новости? у меня стати стоит модуль Simtech Development: Геолокация по IP с помощью MaxMind версия 1.0, это про него здесь речь?

Скажите, есть какие-либо новости? у меня стати стоит модуль Simtech Development: Геолокация по IP с помощью MaxMind версия 1.0, это про него здесь речь?

Меня "волновал" модуль Геолокации Гугл. Его "починили". Можно качать обновленную версию.

ПроMaxMind - ничего не могу сказать.

Скажите, есть какие-либо новости? у меня стати стоит модуль Simtech Development: Геолокация по IP с помощью MaxMind версия 1.0, это про него здесь речь?

Здравствуйте!

У вас возникли какие-то проблемы с модулем геолокации MaxMind?