osm2pgsql - импорт файла планеты openstreetmaps занимает очень много времени
Я установил Nominatim на сервер, предназначенный только для данных OSM, со следующими конфигурациями: операционная система CentOS 7, 2x Intel XEON CPU L5420 @ 2,50 ГГц (всего 8 ядер ЦП), 16 ГБ оперативной памяти и 2x2 ТБ жесткого диска SATA.
Я настроил postgresql, основываясь на рекомендациях вики по установке Nominatim ( http://wiki.openstreetmap.org/wiki/Nominatim/Installation), принимая во внимание, что на моей машине есть только 16 ГБ вместо 32 ГБ рекомендуется для этих конфигов. Я использовал следующие вещи:
shared_buffers = 1GB # recommended for a 32GB machine was 2 GB
maintenance_work_mem = 4GB # recommended for a 32GB macinhe was 8 GB
work_mem = 20MB # recommended for a 32GB machine was 50 MB
effective_cache_size = 10GB # recommended for a 32GB machine was 24 GB
synchronous_commit = off
checkpoint_segments = 100
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9
fsync = off
full_page_writes = off`
Во-первых, я попытался импортировать небольшую страну (Люксембург), установив размер кэша 6000, используя файл setup.php из утилиты, он был успешно импортирован менее чем за 1 час.
Во-вторых, я удалил данные Люксембурга и импортировал для другой цели тестирования страновой фрагмент Великобритании, используя кэш размером 8000, который также успешно импортировался, примерно через 2-3 часа.
Сегодня я решил попробовать импортировать весь файл planet.pbf, поэтому удалил базу данных postgresql, загрузил файл pbf планеты с одного из официальных зеркальных сайтов и запустил установку с размером кэша: 10000. Заранее я прочитал некоторые тесты, чтобы получить смутное представление о том, сколько времени и места займет эта операция.
Когда начался импорт, я был очень удивлен. Импортирование узлов шло с колоссальной скоростью 1095,6 кбит / с, в тестируемом мною тесте (32 ГБ оперативной памяти) он составлял всего 311,7 кбит / с.
Но когда импорт узлов завершился и начался импорт путей, скорость значительно упала. Он импортировал пути со скоростью 0,16 к / с (хотя он медленно увеличивался, начинался с 0,05 к / с и через 4 часа поднялся до вышеупомянутого значения).
Я остановил импорт и попытался настроить параметры. Сначала я выделил больший размер кэша (12000), но безуспешно, узлы импортировались с очень высокой скоростью, но пути остались на уровне 0,10-0,13 к / с. Затем я попытался выделить новый файл подкачки (оригинал был 8 ГБ, я выделил еще 32 ГБ в качестве файла подкачки), но это тоже ничего не изменило. Наконец, я отредактировал файл setup.php, изменил --number-process с 1 на 6 и включил ключевое слово --slim при запуске osm2psql, но ничего не изменилось.
Прямо сейчас у меня нет идей. Это снижение скорости нормально? Должен ли я обновить свою машину до рекомендуемой памяти? Я думал, что для планеты pbf будет достаточно 16 ГБ оперативной памяти, я знал, что с этой машиной может потребоваться больше времени, чем с 32 ГБ, но это кажется очень большим. Если бы импорт всей планеты занял не более 12-15 дней, я бы с этим согласился, но, как сейчас выглядит, импорт с этими настройками займет около 2 месяцев, а это слишком много, учитывая ошибку может произойти где угодно, и мне придется начать весь процесс импорта снова.
Любые идеи, которые могут вызвать эту проблему, или какие-то другие настройки, которые я мог бы попытаться ускорить процесс импорта?
Спасибо
1 ответ
У меня была похожая проблема с производительностью при использовании дисков SATA, когда я заменил диски SATA на SSD-диски, скорость импорта увеличилась с 0,02 к / с до 8,29 к / с. Сейчас у меня очень медленный импорт отношений со скоростью 0,01/ с, поэтому я считаю, что память также является важным фактором для полного импорта планет, но я не проверял его снова.