No space left on device

1,480 views
Skip to first unread message

Юрий Кудряшов

unread,
Aug 19, 2016, 12:01:55 PM8/19/16
to ClickHouse
Приветствую, всех

Есть такая структура:

CREATE TABLE IF NOT EXISTS db.table
(
    f1 Int64,
    f2  Int64,
    f3  Int64,
    f4  Int64,
    createdDay DEFAULT toDate(date),
    date DateTime,
    f5 String,
    f6  Int64,
    f7  Int64,
    f8  Int64,
    z1 Nested
    (
      ID UInt64,
      Type String
    )

) ENGINE = MergeTree(createdDay, (f1,f2, createdDay), 8192)

есть ~4000 файлов на 18 Гб TabSeparated файликов.

после импорта 14 файлика вываливается ошибка

Code: 76. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Cannot open file ...clickhouse_datastore/.../tmp_20131001_20131031_3347_3347_0/createdDay.mrk, errno: 28, strerror: No space left on device.

$df -i
Filesystem        Inodes    IUsed     IFree IUse%
/dev/sde2      906640140 21564243 885075897    3%

$df -h
Filesystem      Size  Used Avail Use%
/dev/sde2       1,9T 1019G  844G  55%

clickhouse собирался из исходников.

$ clickhouse-client
ClickHouse client version 1.1.54002.
Connecting to localhost:9000.
Connected to ClickHouse server version 1.1.54002.

В чем может быть проблема?

man...@gmail.com

unread,
Aug 19, 2016, 2:03:26 PM8/19/16
to ClickHouse
Посмотрите, на каком в точности разделе расположена директория с данными и сколько там свободного места.
df -h ...clickhouse_datastore/.../tmp_20131001_20131031_3347_3347_0/
Точно ли вы привели вывод df полностью? Где столбец "Mounted on"? Также можете посмотреть вывод mount.
Есть ли дополнительные ограничения ulimit?
Если вы запускаете сервер в виртуалке, есть ли у неё дополнительные ограничения?

Юрий Кудряшов

unread,
Aug 19, 2016, 2:30:28 PM8/19/16
to ClickHouse
с местов на разделе нормально все - его хватает,
ограничений на папку где хранятся данные clickhouse тоже нет.

tmp_20131001_20131031_3347_3347_0 - указанной директории в папке таблицы нет как таковой.

$ ulimit -a

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63395
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 4096
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63395
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Попробую увеличить количество открытых файлов.

Попробовал все файлы слить в один и его целым кусков залить, выпала такая ошибка:

Code: 210. DB::NetException: Connection reset by peer while writing to socket (127.0.0.1:9000)

пятница, 19 августа 2016 г., 21:03:26 UTC+3 пользователь man...@gmail.com написал:

Юрий Кудряшов

unread,
Aug 19, 2016, 2:34:14 PM8/19/16
to ClickHouse
и места

$ df -h /media/hyper/clickhouse_datastore/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde2       1,9T  1,1T  826G  56% /media/hyper

и inode хватает

$ df -i /media/hyper/clickhouse_datastore/
Filesystem        Inodes    IUsed     IFree IUse% Mounted on
/dev/sde2      886842780 21564294 865278486    3% /media/hyper


пятница, 19 августа 2016 г., 21:03:26 UTC+3 пользователь man...@gmail.com написал:
Посмотрите, на каком в точности разделе расположена директория с данными и сколько там свободного места.

Юрий Кудряшов

unread,
Aug 19, 2016, 3:09:02 PM8/19/16
to ClickHouse
Увеличение числа открытых файлов не помогло:


$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63395
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 40096

pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63395
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Также падает после 14 файла.

Received exception from server:
Code: 76. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Cannot open file /media/hyper/clickhouse_datastore/data/ ... /tmp_20100601_20100630_3303_3303_0/columns.txt, errno: 28, strerror: No space left on device.


пятница, 19 августа 2016 г., 21:30:28 UTC+3 пользователь Юрий Кудряшов написал:

Юрий Кудряшов

unread,
Aug 19, 2016, 3:45:59 PM8/19/16
to ClickHouse
если пробовать сделать повторную вставку этого же куска файла (после предварительной попытки вставки цельного куска в 18 Гб), то не долго думая выкидывает ошибку (секунда или две где-то):


Code: 210. DB::NetException: Connection reset by peer while writing to socket (127.0.0.1:9000)

Итого:

1. если пробовать залить по одному файлу - то заходит не далее 14 файла (в среднем в файле 50-55 тыс. строк).
вливается не больше 900 000 строк

2. если вливать цельным куском в 18 Гб, то работает продолжительное время и падает где-то на 140 секунде.
вливается 15.3 млн строк.

PS вставка каждый раз производилась на пустой таблице.

Настройки сервера (из дефолтных менял только max_execution_time - для проверки, но не помогло) :

SELECT *
FROM system.settings
FORMAT CSV

"min_compress_block_size","65536",0
"max_compress_block_size","1048576",0
"max_block_size","65536",0
"max_insert_block_size","1048576",0
"min_insert_block_size_rows","1048576",0
"min_insert_block_size_bytes","268435456",0
"max_threads","8",0
"max_read_buffer_size","1048576",0
"max_distributed_connections","1024",0
"max_query_size","262144",0
"interactive_delay","100000",0
"connect_timeout","10",0
"connect_timeout_with_failover_ms","50",0
"receive_timeout","300",0
"send_timeout","300",0
"queue_max_wait_ms","5000",0
"poll_interval","10",0
"distributed_connections_pool_size","1024",0
"connections_with_failover_max_tries","3",0
"extremes","0",0
"use_uncompressed_cache","0",1
"replace_running_query","0",0
"background_pool_size","6",0
"distributed_directory_monitor_sleep_time_ms","100",0
"optimize_move_to_prewhere","1",0
"replication_alter_partitions_sync","1",0
"replication_alter_columns_timeout","60",0
"load_balancing","random",1
"totals_mode","after_having_exclusive",0
"totals_auto_threshold","0.5",0
"compile","0",0
"min_count_to_compile","3",0
"group_by_two_level_threshold","100000",0
"group_by_two_level_threshold_bytes","100000000",0
"distributed_aggregation_memory_efficient","0",0
"aggregation_memory_efficient_merge_threads","1",0
"max_parallel_replicas","1",0
"parallel_replicas_count","0",0
"parallel_replica_offset","0",0
"skip_unavailable_shards","0",0
"distributed_group_by_no_merge","0",0
"merge_tree_min_rows_for_concurrent_read","163840",0
"merge_tree_min_rows_for_seek","0",0
"merge_tree_coarse_index_granularity","8",0
"merge_tree_max_rows_to_use_cache","1048576",0
"merge_tree_uniform_read_distribution","1",0
"optimize_min_equality_disjunction_chain_length","3",0
"min_bytes_to_use_direct_io","0",0
"force_index_by_date","0",0
"force_primary_key","0",0
"strict_insert_defaults","0",0
"mark_cache_min_lifetime","10000",0
"max_streams_to_max_threads_ratio","1",0
"network_compression_method","lz4",0
"priority","0",0
"log_queries","0",0
"log_queries_cut_to_length","100000",0
"distributed_product_mode","deny",0
"global_subqueries_method","push",0
"max_concurrent_queries_for_user","0",0
"insert_quorum","0",0
"insert_quorum_timeout","600000",0
"select_sequential_consistency","0",0
"table_function_remote_max_addresses","1000",0
"max_distributed_processing_threads","8",0
"read_backoff_min_latency_ms","1000",0
"read_backoff_max_throughput","1048576",0
"read_backoff_min_interval_between_events_ms","1000",0
"read_backoff_min_events","2",0
"memory_tracker_fault_probability","0",0
"enable_http_compression","0",0
"http_zlib_compression_level","3",0
"http_native_compression_disable_checksumming_on_decompress","0",0
"resharding_barrier_timeout","300",0
"count_distinct_implementation","uniq",0
"max_rows_to_read","0",0
"max_bytes_to_read","0",0
"read_overflow_mode","throw",0
"max_rows_to_group_by","0",0
"group_by_overflow_mode","throw",0
"max_bytes_before_external_group_by","0",0
"max_rows_to_sort","0",0
"max_bytes_to_sort","0",0
"sort_overflow_mode","throw",0
"max_bytes_before_external_sort","0",0
"max_result_rows","0",0
"max_result_bytes","0",0
"result_overflow_mode","throw",0
"max_execution_time","86400",1
"timeout_overflow_mode","throw",0
"min_execution_speed","0",0
"timeout_before_checking_execution_speed","0",0
"max_columns_to_read","0",0
"max_temporary_columns","0",0
"max_temporary_non_const_columns","0",0
"max_subquery_depth","100",0
"max_pipeline_depth","1000",0
"max_ast_depth","1000",0
"max_ast_elements","50000",0
"readonly","0",0
"max_rows_in_set","0",0
"max_bytes_in_set","0",0
"set_overflow_mode","throw",0
"max_rows_in_join","0",0
"max_bytes_in_join","0",0
"join_overflow_mode","throw",0
"max_rows_to_transfer","0",0
"max_bytes_to_transfer","0",0
"transfer_overflow_mode","throw",0
"max_rows_in_distinct","0",0
"max_bytes_in_distinct","0",0
"distinct_overflow_mode","throw",0
"max_memory_usage","10000000000",1
"max_memory_usage_for_user","0",0
"max_memory_usage_for_all_queries","0",0
"max_network_bandwidth","0",0
"max_network_bytes","0",0




пятница, 19 августа 2016 г., 21:30:28 UTC+3 пользователь Юрий Кудряшов написал:

man...@gmail.com

unread,
Aug 21, 2016, 12:12:07 PM8/21/16
to ClickHouse
Сообщение "Connection reset by peer while writing to socket" означает, что сервер разорвал соединение.
Посмотреть, по какой причине, можно в его логе.

Сообщение "Cannot open file ..., errno: 28, strerror: No space left on device." говорит нам, что при вызове open, операционная система вернула такой код ошибки. Можно посмотреть это более подробно с помощью strace:

sudo strace -f -e trace=open -p $(pidof clickhouse-server)

Там вы можете увидеть, как в точности открывается файл.

На всякий случай посмотрите эту страницу:
http://blog.merovius.de/2013/10/20/ext4-mysterious-no-space-left-on.html
Там описаны возможные причины возникновения ошибки "No space left on device" кроме нехватки места и инод.
(Я не сталкивался с такими случаями на практике.)

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

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



clickhouse собирался из исходников.

$ clickhouse-client
ClickHouse client version 1.1.54002.
Connecting to localhost:9000.
Connected to ClickHouse server version 1.1.54002.

Эта версия устарела на пару недель. Сейчас актуальная 54010.
http://repo.yandex.ru/clickhouse/trusty/pool/main/c/clickhouse/
Можете просто посмотреть версию пакетов и собрать из исходников такую же.
На вашу проблему это не влияет.

В init.d скрипте из пакета есть установка ulimit (в 262144), но с вашей настройкой 40096 тоже всё будет хорошо работать.
При превышении лимита вы получите другое сообщение об ошибке (Too many open files).

Настройка max_execution_time не влияет на проблему.

Юрий Кудряшов

unread,
Aug 21, 2016, 5:00:26 PM8/21/16
to ClickHouse
$cat /etc/fstab

...
/dev/sde2   /media/hyper   ntfs-3g   defaults,permissions   0   0
...

При импорте одного "большого" файла
при которой выдается ошибка:

Code: 210. DB::NetException: Connection reset by peer while writing to socket

trace говорит о том, что не хватает места для хранения Nested значений:

[pid  1638] open("/media/hyper/clickhouse_datastore/ ... size0.mrk", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOSPC (No space left on device)

Попробую на ext4 все повторить,
вероятно с ntfs-3g проблемы - в нете есть инфа о похожем поведении.

воскресенье, 21 августа 2016 г., 19:12:07 UTC+3 пользователь man...@gmail.com написал:

Юрий Кудряшов

unread,
Aug 22, 2016, 12:14:53 PM8/22/16
to ClickHouse
После смены файловой системы на ext4 большой файл вошел без проблем.

:) select count() from db.table

┌───count()─┐
│ 209910722 │
└───────────┘

$cat /media/hyper/clickHouseTable.temp | wc -l
209910722

Спасибо за оперативные ответы! Будем дальше мучать clickhouse :)

понедельник, 22 августа 2016 г., 0:00:26 UTC+3 пользователь Юрий Кудряшов написал:
Reply all
Reply to author
Forward
0 new messages