powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Строки большого размера и Out of Memory
20 сообщений из 20, страница 1 из 1
[PHP] Строки большого размера и Out of Memory
    #38390784
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю из консоли:
Код: php
1.
2.
<?php 
str_repeat('x', 1024*1024*1024 * 8);



Получаю ошибку: PHP Fatal error: Out of memory (allocated 262144) (tried to allocate 8589934593 bytes)

memory_limit выставлен в -1. опция действует при работе скрипта (проверял через phpinfo).

ос Ubuntu 13.04 x86_64; php 5.4.19, 64-битный.

В доках сказано просто "строки могут быть > 2Гб", про ограничения ничего не нашел.

Это срабатывают лимиты операционки? Если да, то какие именно?
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390792
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbearВыполняю из консоли:
Код: php
1.
2.
<?php 
str_repeat('x', 1024*1024*1024 * 8);



Получаю ошибку: PHP Fatal error: Out of memory (allocated 262144) (tried to allocate 8589934593 bytes)

memory_limit выставлен в -1. опция действует при работе скрипта (проверял через phpinfo).

ос Ubuntu 13.04 x86_64; php 5.4.19, 64-битный.

В доках сказано просто "строки могут быть > 2Гб", про ограничения ничего не нашел.

Это срабатывают лимиты операционки? Если да, то какие именно?
А Вы уверены, что в системе есть свободных 8Гб оперативки? Сказало, что смогло найти только 260 метров... По поводу ограничения - оно может быть установлено на любом уровне (начиная с php и заканчивая операционкой), но думаю в Вашем случае дело не в лимите, а в недостатке оперативки для данной операции :)
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390798
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbear,

задача высосана из пальца.
пхп не заточен для таких задач. поймите.
если есть реальная задача по обработке строк - опишите. можно будет сказать куда копать. а так - обсуждение коня в вакууме.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390859
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbearЭто срабатывают лимиты операционки?Кроме лимитов операционки (и наличия железа) есть еще лимиты PHP.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390935
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрА Вы уверены, что в системе есть свободных 8Гб оперативки?
Сказало, что смогло найти только 260 метров...

В системе 4GB физической памяти.
$ cat /proc/meminfo
MemTotal: 3910656 kB
MemFree: 1037752 kB
Buffers: 98416 kB
Cached: 1148492 kB
SwapCached: 0 kB
Active: 1629604 kB
Inactive: 1030432 kB
Active(anon): 1418044 kB
Inactive(anon): 17200 kB
Active(file): 211560 kB
Inactive(file): 1013232 kB
Unevictable: 6084 kB
Mlocked: 6084 kB
SwapTotal: 4052988 kB
SwapFree: 4052988 kB
Dirty: 52 kB
Writeback: 40 kB
AnonPages: 1419208 kB
Mapped: 280724 kB
Shmem: 18636 kB
Slab: 87156 kB
SReclaimable: 53796 kB
SUnreclaim: 33360 kB
KernelStack: 4984 kB
PageTables: 39024 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6008316 kB
Committed_AS: 5340528 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 283520 kB
VmallocChunk: 34359451676 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 63488 kB
DirectMap2M: 3991552 kB


Какой максимальный объем строки я могу создать? MemTotal + SwapFree?

ПрограмёрПо поводу ограничения - оно может быть установлено на любом уровне (начиная с php и заканчивая операционкой), но думаю в Вашем случае дело не в лимите, а в недостатке оперативки для данной операции :)
memory_limit в php выставлен в -1, какие еще ограничения посмотреть?
Програмёрно думаю в Вашем случае дело не в лимите, а в недостатке оперативки для данной операции :)
как это можно выяснить точно?
r uзадача высосана из пальца.
пхп не заточен для таких задач. поймите.

Я в курсе, постановка задачи не моя. Сейчас мне нужно показать, что для имеющейся задачи "решение в лоб" не подходит, с указанием конкретных причин.
vklemadbearЭто срабатывают лимиты операционки?Кроме лимитов операционки (и наличия железа) есть еще лимиты PHP.
какие? memory_limit=-1 , что еще может быть?
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390954
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbear, а запустите через strace
вот у меня такой вывод на 8гб ram + немного подгружено программами
видно что ошибку возвращает именно ОС
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
strace php t.php
....

mmap(NULL, 8590200832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
brk(0x2026f3000)                        = 0x26b3000
mmap(NULL, 8590331904, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f0abcc6a000
munmap(0x7f0abcc6a000, 54091776)        = 0
munmap(0x7f0ac4000000, 13017088)        = 0
mprotect(0x7f0ac0000000, 135168, PROT_READ|PROT_WRITE) = 0
mmap(NULL, 8590200832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
write(2, "PHP Fatal error:  Out of memory "..., 112PHP Fatal error:  Out of memory (allocated 786432) (tried to allocate 8589934593 bytes) in /tmp/t.php on line 2
) = 112
...
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390973
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

получаю аналогичный вывод:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
munmap(0x7fdc8ff7d000, 115)             = 0
close(3)                                = 0
munmap(0x7fdc8ff7f000, 4096)            = 0
mmap(NULL, 8590200832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
brk(0x2015c7000)                        = 0x1577000
mmap(NULL, 8590331904, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 8590200832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
write(2, "PHP Fatal error:  Out of memory "..., 128PHP Fatal error:  Out of memory (allocated 262144) (tried to allocate 8589934593 bytes)
...
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390976
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbearmemory_limit=-1 , что еще может быть?Таки посмотрите phpinfo().
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390981
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vklemadbearmemory_limit=-1 , что еще может быть?Таки посмотрите phpinfo().
что именно посмотреть?
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38390982
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbear, смущает, что число полностью одинаковое. Видимо есть какой-то еще лимит.

вот так у вас что получается?
<?php
str_repeat('x', (int)1024*1024*1024 * 7.4);
?>

у меня oom-killer вынес процесс. ибо нефиг.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391016
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbearчто именно посмотреть?memory_limit и посмотреть. Не факт что выставленное в конфиге значение применилось.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391023
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, из вывода strace можно заключить, что именно ОС возвращает ошибку.
У меня 8 гб памяти + 1 гб свопа и некоторое количество запущенных программ, но ошибка возникает при попытке запросить ровно 8гб.
Я предлагаю ТС чуть уменьшить затребованный объем, чтобы понять какой именно лимит возникает в его случае, чтобы можно было предполагать какого типа это ограничение. Может быть у него не 8, а 4 гб, например.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391029
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vklemadbearчто именно посмотреть?memory_limit и посмотреть. Не факт что выставленное в конфиге значение применилось.
применено, писал об этом в первом посте.

netwind, смогу посмотреть часов через 3-5, отпишусь.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391047
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbear, ну, надеюсь, понятно что нужно не просто уменьшить, а последовательными экспериментами найти лимит в вашем случае и дальше уже пытаться думать.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391378
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем, я решил пока забить на это дело. выкладки заказчику переслал, посмотрю, что скажет. там и других проблем хватает, кроме выделения памяти.

всем спасибо.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391423
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbear, ну это неспортивно! лимит-то какой получился? тоже 8 гб или меньше?
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391461
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

неспортивно, зато высплюсь наконец-то))

там что-то в районе в 6-7gb получается выделить, похоже, от свободного свопа зависит, точную зависимость от /proc/meminfo не подобрал, мозги уже не варят.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38391467
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbear, пожалуй, этого достаточно чтобы заключить, что описанное явление не является каким-то ограничением дизайна ядра или специальным лимитом для безопасности и стабильности.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38471822
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оффтоп: r_u, с тобой как-то можно связаться в личке? есть вопрос.
...
Рейтинг: 0 / 0
[PHP] Строки большого размера и Out of Memory
    #38472266
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madbear,

icq 60691309 но я там не постоянно
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Строки большого размера и Out of Memory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]