|
|
|
| Доброго времени суток.
Проблема над которой бьюсь уже 2 недели.
Есть зацикленный php скрипт который выполняет некоторые действия, за сутки сей скрипт съедает 2ГБ ОЗУ и Apache перезапускает процесс с логом в error.log "Parent: child process exited with status 3221225477 -- Restarting."
Собственно сам вопрос почему 2ГБ?
Win2003(x64) , ОЗУ 4ГБ
# Apache 2.0.63
# PHP 5.2.6
# MySQL 5.0.51b | |
|
|
|
|
|
|
|
для: deberin
(14.06.2010 в 10:27)
| | потому что процесс потребляет виртуальную память, а не физическую.
А у диспетчера памяти имеются свои ограничения | |
|
|
|
|
|
|
|
для: Trianon
(14.06.2010 в 11:18)
| | кто виноват, что делать? | |
|
|
|
|
|
|
|
для: deberin
(14.06.2010 в 11:20)
| | Никто не виноват. Программировать нужно так, чтобы память не утекала.
А когда процессу 4GB хватать перестанет, что Вы делать надумаете? | |
|
|
|
|
|
|
|
для: Trianon
(14.06.2010 в 11:21)
| | С утечкой памяти согласен, но всё таки, под виртуальную памяти выделено 6GB, чё ж Apachу не нравится? | |
|
|
|
|
|
|
|
для: deberin
(14.06.2010 в 11:33)
| | Не надо путать файл подкачки (некорректно называемый в виндовс виртуальной памятью) и виртуальное адресное пространство.
под виртуальное адресное пространство выделить больше 4GB в 32-разрядных системах невозможно в принципе.
Да и оно само уменьшается на окна, занимаемые системными нуждами.
Если на пальцах :
Да.
Есть 4Gb адресов,через которые можно/нужно есть память (и не только память, если быть честным). Это виртуальное адресное пространство.
Есть пул в 8Gb памяти (до 4G ОЗУ... + существенно больше с учетом файла подкачки. )
Только этот общий пул есть не у Вас, не у php и не у апача.
Он у системы.
У той же системы есть дохрена процессов (включая и свои собственные) которые этим пулом можно и нужно кормить.
И никому из процессов не обещано, что ему дадут съесть более половины теоретически адресуемого пространства. | |
|
|
|