Errno 5 errno 12 невозможно выделить память
When trying to build the TF-IDF model after the 8th Batch I get the above-mentioned error:
System Information: Data Science Virtual Machine running Linux on Azure with 56G memory and 330G Hard drive.
I am running everything from a directory mounted on /dev/sdb1
The following is the descriptive error message:
10/24/2017 03:32:38 PM: [ -------------------------Batch 7/11------------------------- ]
10/24/2017 03:36:43 PM: [ -------------------------Batch 8/11------------------------- ]
Exception in thread Thread-1:
Traceback (most recent call last):
File "/anaconda/envs/py35/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/anaconda/envs/py35/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/anaconda/envs/py35/lib/python3.5/multiprocessing/pool.py", line 366, in _handle_workers
pool._maintain_pool()
File "/anaconda/envs/py35/lib/python3.5/multiprocessing/pool.py", line 240, in _maintain_pool
self._repopulate_pool()
File "/anaconda/envs/py35/lib/python3.5/multiprocessing/pool.py", line 233, in _repopulate_pool
w.start()
File "/anaconda/envs/py35/lib/python3.5/multiprocessing/process.py", line 105, in start
self._popen = self._Popen(self)
File "/anaconda/envs/py35/lib/python3.5/multiprocessing/context.py", line 267, in _Popen
return Popen(process_obj)
File "/anaconda/envs/py35/lib/python3.5/multiprocessing/popen_fork.py", line 20, in init
self._launch(process_obj)
File "/anaconda/envs/py35/lib/python3.5/multiprocessing/popen_fork.py", line 67, in _launch
self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory
There was a previous issue in the log that was closed stating that it was a windows machine. Any pointers on this one?
The text was updated successfully, but these errors were encountered:
3 Answers 3
This issue is the server seem to only have 490MB of RAM on the machine and you have 421MB used. Leaving only 68MB free; that is not a lot of memory for any system to work with.
Looking at the output from top shows that MySQL (aka: mysqld ) is the culprit.
The best thing you can do if this is a temporary situation is to simply stop MySQL like this:
Then with MySQL stopped, you can run yum install as expected.
But another solution would be to use a script like “MySQL Tuning Primer” to help assess the MySQL usage and configuration on the serve and adjust accordingly. The reason being is plain vanilla MySQL out of the box will be a memory hog. But “MySQL Tuning Primer” will help assess your install and let you know what you can tweak. Including lowering memory requirements so the setup can be happy with your limited resources. The only catch is MySQL needs to be actively running for at least 48 hours straight for the “MySQL Tuning Primer” results to be worth anything. Past that, performance tuning MySQL with this script a great way to fine-tune your L.A.M.P. setup.
Now find the line that a says Timeout and change that to “120”; two minutes is a reasonable timeout window:
Similarly find MaxKeepAliveRequests and change that to “24”; “keep alive” connections are good, but don’t let them overwhelm your setup:
And find KeepAliveTimeout and set that to “2”; this should correlate to how fast one page on your site loads and 2 seconds is a good average:
Now look for the XML config directive set as :
The key to this is ServerLimit and MaxClients . By default Apache’s settings are quite high; 255 for MaxClients I believe. But the reality is even a high traffic site will only get 70-80 connections per second… And then die… Meaning Apache connections are stateless so the benchmark is connections per second. So for a development or small scale server, “40” is a good number.
Now with those key adjustments made, restart Apache like this:
By adjusting MySQL and Apache to have more reasonable settings than default/canned values can free up resources on your server and make everything run more smoothly.
Не могу победить mysql.
Раз в сутки или чаще мускул ложится.
Памяти много, 32 гб, нагрузки мизер на сервере.
Mysqltuner но это совсем свежак, прямо после перезагрузки данные
Размер глобальных буферов (key_buffer_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + query_cache_size).
Размер буфера одного подключения (read_buffer_size + read_rnd_buffer_size + sort_buffer_size + thread_stack + join_buffer_size).
Так же не забываем последнее умножить на max_connections и сумма всего этого хозяйства в идиале не должна привышать вашу память.
у вас буфер innodb_buffer_pool_size=10G а это уже треть памяти
160109 22:37:20 InnoDB: Initializing buffer pool, size = 10.0G
InnoDB: mmap(686817280 bytes) failed; errno 12
и забрать он из не смог
Вы прям уверенны, что в этот момент никто не занимает память?
Shing: не от физической, а от свободной. Судя по тому, что падает mmap свободной в этот момент нет. На сервере, что то ещё крутиться?
Shing: Хех, так к вам раз в сутки прибегает поисковик и начинает долбить, что то на пхп где лимит под запрос 512mb а то и больше, вот память и улетает. Они как раз раз в сутки бегают в среднем. Проверьте access.log во время падения, на 99% уверен, что именно поисковики вы там и уведите.
посмотрите, что у вас тут на не упавшем сервере [[0;32mOK[0m] InnoDB buffer pool / data size: 10.0G/42.7M
Снизил пока до 3 Гб innodb pool, посмотрим что будет, может еще уменьшу позже
InnoDB buffer pool / data size: 3.0G/42.7M
В log/httpd/access_log вообще только такое
"
127.0.0.1 - - [07/Jan/2016:16:00:01 +0300] "GET /server-status HTTP/1.0" 200 26861 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:05:02 +0300] "GET /server-status HTTP/1.0" 200 27000 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:10:02 +0300] "GET /server-status HTTP/1.0" 200 27116 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:15:01 +0300] "GET /server-status HTTP/1.0" 200 26946 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:20:01 +0300] "GET /server-status HTTP/1.0" 200 26920 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:25:01 +0300] "GET /server-status HTTP/1.0" 200 27207 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:30:01 +0300] "GET /server-status HTTP/1.0" 200 26923 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:35:02 +0300] "GET /server-status HTTP/1.0" 200 26978 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:40:02 +0300] "GET /server-status HTTP/1.0" 200 27126 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:45:02 +0300] "GET /server-status HTTP/1.0" 200 26904 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:50:01 +0300] "GET /server-status HTTP/1.0" 200 27120 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:16:55:01 +0300] "GET /server-status HTTP/1.0" 200 27064 "-" "Wget/1.12 (linux-gnu)"
127.0.0.1 - - [07/Jan/2016:17:00:01 +0300] "GET /server-status HTTP/1.0" 200 27426 "-" "Wget/1.12 (linux-gnu)"
Цитата из man fsck.ext2
-c Эта опция заставляет e2fsck к использованию badblocks(8) программе сделать только для чтения сканирования устройства для того , чтобы найти какие - либо плохие блоки. Если обнаружены какие-либо поврежденные блоки, они добавляются в индекс плохих блоков, чтобы предотвратить их размещение в файле или каталоге. Если эта опция указана дважды, то сканирование плохих блоков будет выполнено с использованием неразрушающего теста чтения-записи
Я форматирую мой установочный USB на низкий уровень из windows, перемонтирую iso, и он работает . мой жесткий диск работает отлично, но этот USB pendrive нет. Большое спасибо за ответ
У меня та же проблема, и я попробовал свежую загрузку с сайта Ubuntu и решил поблагодарить за поддержку
-1 chkdsk может только переназначить плохие блоки, если файловая система поддерживает это, то есть только FAT. Аналогичным образом, fsck может работать только на существующих файловых системах, что не очень полезно, при попытке создать новую файловую систему во время установки системы. Если кто-то хочет просто обнаруживать плохие блоки независимо от каких-либо файловых систем, его следует использовать badblocks(8) напрямую. Кроме того, современные жесткие диски и SDD переназначают поврежденные блоки, если вы попытаетесь записать на них (и остались неиспользованные резервные блоки). Плохие блоки также являются признаком того, что диск умирает и больше не должен использоваться.
Когда я сделал 'chkdsk' из Windows, он не возвращал ни ошибок, ни плохих блоков. Поэтому мне пришлось использовать окна, Disk Management Utility чтобы удалить неудачную установку Ubuntu и оставить ее нераспределенной. Попробовал установить снова и все заработало.
@ Сергей - я только что получил этот жесткий диск, и он совершенно новый. это значит, что я должен получить новый?
У меня тоже была эта проблема при установке .
Целевой машиной стал совершенно новый ноутбук Asus K53e. Установочный образ был ubuntu-11.10-desktop-amd64.iso (64-разрядная версия ). Я записал этот образ на компакт-диск . Errno 5. Записал его на загрузочную флешку . Errno 5 снова :( Я пытался 4 или 5 раз.
fsck сказал, что весь корневой раздел был в порядке (через 10 часов). memtest86 + сказал, что все 6 ГБ оперативной памяти тоже хорошо. Я попытался установить непосредственно при загрузке живого образа ( Установить Ubuntu ). Я также попробовал кнопку Try Ubuntu , затем запустил установку с живого рабочего стола. Опять Errno 5.
В итоге получается, что скачанный iso-файл был как-то устаревшим или неправильным. Ты можешь в это поверить!?
в результате dmesg (я думаю) или где-то в /var/log при проверке после сбоя установки сбросил меня обратно на рабочий стол (Try Ubuntu).
В общем, убедитесь, что вы проверили хеш MD5 загруженного ISO-файла! (Я знаю. Я знаю. Я тоже редко проверяю!)
В любом случае, я снова скачал 64-битную Ubuntu 11.10 и на этот раз мне предложили в диалоговом окне Сохранить как вместо того, чтобы попросить выбрать зеркальный сайт. При загрузке контрольная сумма совпадает :) Установка в порядке :)
I am using DigitalOcean VPS with RAM 512MB, the $5/month plan.
POMCP commented Nov 1, 2017
I think this is absolutely a memory issue. This was the footprint in run time. A parent process seems to dominate the RAM usage peaking at 96 %, this happens around batch 8 and then the program crashes. Here are some snapshots that can be of reference.
ajfisch commented Nov 1, 2017
Yeah, its a memory issue. 56GB RAM isn't enough to build the tfidf index. You could try reducing the hash size.
Я использую DigitalOcean VPS с оперативной памятью 512 МБ, план $ 5 / месяц.
Эта проблема заключается в том, что сервер имеет только 490 МБ ОЗУ на компьютере, а у вас используется 421 МБ. Оставляя только 68 МБ бесплатно; это не много памяти для любой системы для работы.
Глядя на вывод из top показывает, что MySQL (aka:) mysqld является виновником.
Лучшее, что вы можете сделать, если это временная ситуация, это просто остановить MySQL следующим образом:
Затем, остановив MySQL, вы можете работать yum install как положено.
Но другим решением было бы использование сценария, такого как «MySQL Tuning Primer», чтобы помочь оценить использование и конфигурацию MySQL на подаче и настроить соответственно. Причина в том, что простой MySQL, встроенный в MySQL, станет проблемой с памятью. Но «Учебник по настройке MySQL» поможет оценить вашу установку и даст вам знать, что вы можете настроить. В том числе снижение требований к памяти, так что установка может быть довольна вашими ограниченными ресурсами. Единственный улов - MySQL должен быть запущен в течение как минимум 48 часов подряд, чтобы результаты «MySQL Tuning Primer» чего-то стоили. Кроме того, настройка производительности MySQL с помощью этого скрипта - отличный способ отрегулировать настройки LAMP.
Теперь найдите строку, которая говорит a, Timeout и измените ее на «120»; две минуты - это разумное время ожидания:
Аналогичным образом найдите MaxKeepAliveRequests и измените это на «24»; «Поддержите в живых» соединения хороши, но не позволяйте им нарушать ваши настройки:
И найдите KeepAliveTimeout и установите значение «2»; это должно соответствовать скорости загрузки одной страницы на вашем сайте и средней продолжительности 2 секунды:
Теперь найдите директиву XML config, установленную как :
Ключ к этому есть ServerLimit и MaxClients . По умолчанию настройки Apache довольно высоки; 255 ибо MaxClients я верю. Но реальность такова, что даже сайт с высоким трафиком будет получать только 70-80 соединений в секунду . А потом умрет . Это означает, что соединения Apache не имеют состояния, поэтому эталоном является число соединений в секунду. Так что для сервера разработки или небольшого масштаба «40» - это хорошее число.
Теперь, после внесения этих ключевых изменений, перезапустите Apache следующим образом:
Настройка MySQL и Apache на более разумные настройки, чем стандартные / стандартные значения, может освободить ресурсы на вашем сервере и заставить все работать более гладко.
Я перепробовал все, чтобы установить его на свой ноутбук, но ничего не работает (также повторно загрузите образ ISO).
На целевом жестком диске могут быть поврежденные сектора.
Чтобы проверить sda1 объем для плохих секторов в Linux, запустите fsck -c /dev/sda1 . Для диска C: в Windows это должно быть chkdsk c: /f /r .
ИМХО chkdsk способ будет более подходящим, так как он переназначит плохие блоки на жестком диске, в то время как Linux fsck просто помечает такие блоки как непригодные для использования в текущей файловой системе.
POMCP commented Nov 1, 2017
I think this is absolutely a memory issue. This was the footprint in run time. A parent process seems to dominate the RAM usage peaking at 96 %, this happens around batch 8 and then the program crashes. Here are some snapshots that can be of reference.
Читайте также: