LINUX.ORG.RU
ФорумAdmin

open_basedir realpath_cache_size

 ,


0

1

на сервере используется nginx+apache+mod_php+open_basedir + php7. подключался к апачу через strace и там показывает бесконечные вызовы lstat и от этого большая нагрузка на проц

open_basedir в php.ini не установлен

в конфигах апач прописан на каждый сайт так

php_admin_value open_basedir /home/user2/web/

в интернете нашел только одно решение- это использовать https://github.com/Whissi/realpath_turbo

но с другой стороны не будет ли хуже от этого? может быть проще не использовать open_basedir?

realpath cache создаёт дыру для обхода open_basedir, так что применять их вместе всё равно бесполезно. И в целом да, если сайт нагруженный и состоит из кучи файлов, то под open_basedir его лучше не пытаться запускать.

У тебя один сайт или несколько? Если один то вообще всё просто, закрой от юзера www всё куда он не должен лезть. Если несколько - придётся разделять сайты на отдельных юзеров чтоб сделать то же самое. Речь про обычные unix-права на файлы.

Если заменишь apache+mod_php на php-fpm - настраивать будет в разы проще, пулы под отдельных юзеров там из коробки есть.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

у меня панель веста,с кучей юзеров и кучей сайтов.

для теста выключил везде php_admin_value open_basedir но нагрузка на проц не сильно снизилась

вот параметры

realpath_cache_size	100M	100M
realpath_cache_ttl	300	300
opcache.enable	On	On
limpopo44
() автор топика
Ответ на: комментарий от firkax

убрал везде строки php_admin_value open_basedir, апач перегрузил

простыня вызовов команды lstat пропала. вот что выводит трейс. это часть команд, в основном чтение

30483 stat("/home/admin/web/back/common/helpers/LanguageHelper.php",  <unfinished ...>
30481 gettimeofday({1709564379, 990165}, NULL) = 0
30481 gettimeofday({1709564379, 990237}, NULL) = 0
30481 sendto(163, "]\0\0\0\3SELECT * FROM `menu_lang` W"..., 97, MSG_DONTWAIT, NULL, 0) = 97
30481 poll([{fd=163, events=POLLIN|POLLERR|POLLHUP}], 1, 86400000 <unfinished ...>

 stat("/home/admin/web/back/common/components/model/ActiveRecord.php",  <unfinished ...>
30481 <... recvfrom resumed> "\1\0\0\1\4B\0\0\2\3def\nadmin_nutr\tmenu_la"..., 620, MSG_DONTWAIT, NULL, NULL) = 333
30481 gettimeofday({1709564379, 992643}, NULL) = 0
30481 gettimeofday({1709564379, 992907}, NULL) = 0
30481 gettimeofday({1709564379, 992977}, NULL) = 0
30481 sendto(163, "\\\0\0\0\3SELECT * FROM `menu_lang` W"..., 96, MSG_DONTWAIT, NULL, 0) = 96
30481 poll([{fd=163, events=POLLIN|POLLERR|POLLHUP}], 1, 86400000) = 1 ([{fd=163, revents=POLLIN}])

30484 poll([{fd=163, events=POLLIN|POLLERR|POLLHUP}], 1, 86400000 <unfinished ...>
30485 <... sendto resumed> )            = 47
30480 <... read resumed> "endencies\";a:0:{}s:23:\"\0yii\\base"..., 8192) = 8192
30480 read(164,  <unfinished ...>
30483 <... stat resumed> {st_mode=S_IFREG|0644, st_size=5028, ...}) = 0
30484 <... poll resumed> )              = 1 ([{fd=163, revents=POLLIN}])
30485 poll([{fd=163, events=POLLIN|POLLERR|POLLHUP}], 1, 86400000 <unfinished ...>
30486 <... read resumed> "a:2:{i:0;a:2:{s:6:\"schema\";O:18:"..., 8192) = 2862
30484 recvfrom(163,  <unfinished ...>
30480 <... read resumed> "pdated_at\";s:5:\"value\";N;s:10:\"a"..., 8192) = 8192
30485 <... poll resumed> )              = 1 ([{fd=163, revents=POLLIN}])
30486 read(164,  <unfinished ...>
30484 <... recvfrom resumed> "\3def\nadmin_nutr\4menu\4menu\6entity"..., 104, MSG_DONTWAIT, NULL, NULL) = 104
30480 read(164,  <unfinished ...>
30484 poll([{fd=163, events=POLLIN|POLLERR|POLLHUP}], 1, 86400000 <unfinished ...>
30486 <... read resumed> "", 8192)      = 0
30485 recvfrom(163,  <unfinished ...>
30484 <... poll resumed> )              = 1 ([{fd=163, revents=POLLIN}])
30480 <... read resumed> "\203 \320\262\321\226\321\206\321\226 \320\262\320\266\320\265 \321\201\320\277\321\200\320\270\320\271\320\274\320\260"..., 8192) = 8192
30485 <... recvfrom resumed> "\1\0\0\1\0064\0\0\2\3def\nadmin_nutr\10fpm_fil"..., 20028, MSG_DONTWAIT, NULL, NULL) = 470
30486 read(164,  <unfinished ...>
30484 recvfrom(163, "6\0\0\v\3def\nadmin_nutr\4menu\4menu\7pa"..., 104, MSG_DONTWAIT, NULL, NULL) = 104
30485 gettimeofday( <unfinished ...>
30486 <... read resumed> "", 8192)      = 0
30485 <... gettimeofday resumed> {1709564380, 148113}, NULL) = 0
30484 poll([{fd=163, events=POLLIN|POLLERR|POLLHUP}], 1, 86400000) = 1 ([{fd=163, revents=POLLIN}])
30481 stat("/home/admin/web/back/api/modules/globalData/components/CookiePopUp.php",  <unfinished ...>
30485 gettimeofday( <unfinished ...>


много команд

30517 munmap(0x7f924a3c3000, 65536)     = 0
30517 munmap(0x7f924a3e3000, 65536)     = 0
30517 munmap(0x7f924a3b3000, 65536)     = 0
30517 munmap(0x7f924a3a3000, 65536)     = 0
30517 munmap(0x7f924cfb2000, 65536)     = 0
30517 munmap(0x7f924a403000, 299008)    = 0

может и не изза stat, тогда что смотреть? нагрузка по апачу появляется когда запускаю 10 юзеров на сайт

limpopo44
() автор топика
Ответ на: комментарий от limpopo44

Возможно пхп-скрипты плохо написаны. Был бы у тебя php-fpm вместо апача, можно было бы в его логах сразу посмотреть расходы проца на каждый из запросов. А так можешь смотреть какие дольше всего выполняются, и надеяться что это и есть те, которые жрут проц (что не факт).

Ну или прикрути профайлер какой-нить (ничего конкретного не подскажу), чтоб смотреть в каком месте кода тратится проц.

А ещё может тебе на сайты кто-то майнер залил и вот он работает. Искать так же как и просто нагрузку на проц.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)