@pgsql

Страница 93 из 1062
ptchol
18.09.2016
12:56:28
Yury
18.09.2016
12:56:29
Сколько у вас картинок? Проблемма вымывания кеша может стоять остро.

тут надо понимать, у вас куча народу хочет посмотреть один файл или у вас есть много файлов и много народу равномерно всё это смотрит?

во втором случае кеш вам не сильно поможет

Google
Yury
18.09.2016
12:59:01
обычно храним в субд md5/sha1 от картинки и при рендринге html подставляем сформированный url исходя из md5. (только не кладите всё в одну папку)

Yury
18.09.2016
13:00:20
тогда лучше вам в СУБД не класть и даже не пытаться приложением читать файл и отдавать nginx'у

blkmrkt
18.09.2016
13:00:38
тут увы не pg_dump ошибки находит а сам postgres
там ошибка pg_toast, которая вылезла на 5е сутки бекапа, данные не страшно потерять, главное перенести на ssd сервер. Я сделал REINDEX pg_toast.toast_234532 <- вот эта цифра, это какой-то последовательный ID всех тостов от 0 и вверх, или случайная фигня типа OID? Как определить все битые тосты - только последовательным перебором всех записей в БД? Проще было бы игнорировать все эти ошиьки и пропускать битые записи.

Yury
18.09.2016
13:00:40
если конечно у вас не асинхронное приложение

OID - то же инкремент....

Pavel
18.09.2016
13:01:24
обычно храним в субд md5/sha1 от картинки и при рендринге html подставляем сформированный url исходя из md5. (только не кладите всё в одну папку)
Я так и делаю обычно, но тут труднее поскольку файлы могут быть размазаны по нескольким серверам и не всегда ясно что и куда класть. Объектное хранилище использовать вроде бы грамотно, но не совсем подходит под условия MVP - надо запуститься в прод как можно быстрее уже.

Pavel
18.09.2016
13:02:38
okay.jpg ? То есть не отходим от классики.

Yury
18.09.2016
13:02:56
И я не думаю, что в угоду MVP надо терять здравый смысл. Насколько я помню MVP оно не про отдачу крупных файлов и картинок...

ptchol
18.09.2016
13:03:13
а вы уверены что у вас такой rps будет что кеш не справится ?

Google
Pavel
18.09.2016
13:04:06
а вы уверены что у вас такой rps будет что кеш не справится ?
Не уверен, здесь пальцем в небо, может не будет роста никакого и тогда нагрузка будет вообще мизерная

Yury
18.09.2016
13:05:01
а вы уверены что у вас такой rps будет что кеш не справится ?
Мне кажется что можно сделать с кешем и файлами в СУБД но это будет блоатить СБУД и это не масштабируемо, не говоря о том, что медленно даже при наличии кеша.

блин фигово, у меня очень большая база и очень медденные диски на старом сервере, долго делать select на каждую запись
а остановить сервер и просто сделать cp/rsync на другой нельзя? Он под нагрузкой?

blkmrkt
18.09.2016
13:06:10
Yury
18.09.2016
13:06:14
или там уже другая верся сервера?

можно

blkmrkt
18.09.2016
13:06:22
версия та же точно

ох, попробую

Yury
18.09.2016
13:06:37
если мажорная версия та жа то всё должно быть ок

и у вас там одна архитектура процессора

Yury
18.09.2016
13:07:31
в смысле между 32битами и 64 битами нельзя

Айтуар
18.09.2016
13:07:55
блин фигово, у меня очень большая база и очень медденные диски на старом сервере, долго делать select на каждую запись
ну таблицу вы уже можете определить легко, на ней у вас pg_dump падает. И уже в таблице искать. Если упало сразу после начала бекапа этой таблицы, в формате директории бекап делайте и можно будет оценить в какой части таблицы падает, чтобы не сканить всю таблицу селектом.

Yury
18.09.2016
13:10:46
что бы было уникальное имя файла не привязанное к его реальному имени

в том числе для безопасности

адрессация

Google
ptchol
18.09.2016
13:12:03
Мне кажется что можно сделать с кешем и файлами в СУБД но это будет блоатить СБУД и это не масштабируемо, не говоря о том, что медленно даже при наличии кеша.
я не совсем понял, но я к тому что кеш на уровне nginx или иного прокси, если там не высокий RPS к статике, соберет нормально всю нагрузку.

Roman
18.09.2016
13:12:48
что бы было уникальное имя файла не привязанное к его реальному имени
ну вы же храните sha1 от тела. если sha1 совпали, то либо вы бесплатно получите дедупликацию, либо вам сказочно повезло и вы нашли коллизию.

Yury
18.09.2016
13:13:40
в моём слуачае правда, дубликаты запрещены

я по этому беру ещё md5 от пикселей картинки после декодирования

ptchol
18.09.2016
13:15:03
нет.
обоснуйте ?

Pavel
18.09.2016
13:15:29
обоснуйте ?
Вот мне тоже интересно. У меня весьма положительный опыт от кеша nginx

Roman
18.09.2016
13:17:05
Вот мне тоже интересно. У меня весьма положительный опыт от кеша nginx
да что обосновывать? если у вас есть горячие куски, влезающие в кеш - он вам поможет. если же запросы равномерно распределены по всему датасету - кеш не поможет. ваш ко.

Pavel
18.09.2016
13:17:31
всё зависит от колличество файлов, их размера и собственно характеристик железа
Железка будет слабенькая, на уровне дешевых VDS. Файлы 5-10 мб., количество думаю не больше нескольких сотен, ну может пара тысяч. Когда подрастем, возьмем и железку помощнее.

да что обосновывать? если у вас есть горячие куски, влезающие в кеш - он вам поможет. если же запросы равномерно распределены по всему датасету - кеш не поможет. ваш ко.
Но ведь кеш nginx это по сути те же файлы, которые он хранит у себя где-нибудь в /var и довольно эффективно их отдает.

Pavel
18.09.2016
13:20:08
Ну мы одно и то же имеем в виду :)

Roman
18.09.2016
13:20:32
Но ведь кеш nginx это по сути те же файлы, которые он хранит у себя где-нибудь в /var и довольно эффективно их отдает.
и? кеш там - это иерархия каталогов. если каталога не будет в dentry cache, это это readdir() и 1 сик по диску. если содержимого файла нет в page cache - это снова будет сик по диску.

ptchol
18.09.2016
13:20:50
ptchol
18.09.2016
13:21:30
denty cache будет, потому что файлов не много

Pavel
18.09.2016
13:21:48
и? кеш там - это иерархия каталогов. если каталога не будет в dentry cache, это это readdir() и 1 сик по диску. если содержимого файла нет в page cache - это снова будет сик по диску.
А вот все эти readdir и seek это точно имеет смысл рассуждать в случае когда на сайт заходит человек 500 в день максимум ? :)

Roman
18.09.2016
13:22:00
denty cache будет, потому что файлов не много
с чего бы вдруг? dentry cache вполне неплохо так вымывается page cache.

Google
ptchol
18.09.2016
13:22:02
вы сейчас говорите что т ов духе "если у нас чего то нет в памяти, это работает медленно" - извините это дурь.

Alexey
18.09.2016
13:22:12
Если нагрузка низкая, то хоть с диска, хоть из "кеша" дискового — одна фигня, хотья через энжинкс отдавать, а не сендфайлом.

Если нагрузка низкая вообще можно хоть с дискет отдавать. :о)

Sergey
18.09.2016
13:22:41
Если нагрузка низкая, зачем вообще кеш городить?

Yury
18.09.2016
13:22:45
вообщем я свой способ рекоммендую если: 1. вы думаете масштабироваться к десяткам и сотням тысячам файлов 2. если вам жалко СУБД которая будет пухнуть.

ptchol
18.09.2016
13:23:04
потому что файлики в бд ? ))

Yury
18.09.2016
13:23:07
3. низкая нагрузка ИМХО не повод делать специально медленно когда, другое решение ну пара часов кодинга.

у Postgres вообще проблеммы большие с файлами

Pavel
18.09.2016
13:24:16
Если нагрузка низкая, зачем вообще кеш городить?
Во-первых, кеш все-же значительно ускорит отдачу файлов из БД в случае хоть сколько конкурентного доступа. Во-вторых, цена введения такого кеша - это минут 20 прописать в nginx опции.

3. низкая нагрузка ИМХО не повод делать специально медленно когда, другое решение ну пара часов кодинга.
А вот пара часов - тут у меня сомнения. Как бы не пришлось пару недель все это кодить, чтобы получилось юзабельно и консистентно.

Sergey
18.09.2016
13:27:51
Во-первых, кеш все-же значительно ускорит отдачу файлов из БД в случае хоть сколько конкурентного доступа. Во-вторых, цена введения такого кеша - это минут 20 прописать в nginx опции.
Это смотря как кеш настроить, при особенно прямых руках может и замедлить, если будет miss близок к 100%. Опять же, головная боль про инвалидацию, расчёт правильного размера и ещё куча других вопросов

Pavel
18.09.2016
13:29:24
Да впринципе, файлы иммутабельные, можно их хоть все выгрузить в кеш и поставить ему время жизни пару недель. Место на жестком диске это не такая проблема как распределенность всей системы, пара сотен гигибайт точно будет.

ptchol
18.09.2016
13:29:52
Это смотря как кеш настроить, при особенно прямых руках может и замедлить, если будет miss близок к 100%. Опять же, головная боль про инвалидацию, расчёт правильного размера и ещё куча других вопросов
да, инвалидация будет проблемой, и в бесплатном nginx кроме прилеенного сбоку purge cache ничего нет. и cache:level действительн опридется выбрать адекватный.

но это везде и всегда так )

Pavel
18.09.2016
13:30:25
В общем, я думаю что все же решусь на эту авантюру, потом расскажу как прошло, если что-то вообще получится ;)

ptchol
18.09.2016
13:30:35
а если файлы каждый ра грузятся с новым id то вобще нет проблемы.

Sergey
18.09.2016
13:31:37
Я, кстати, из обсуждения выше не понял зачем блобы в базе хранить.

Fike
18.09.2016
13:36:56
minio
++ (а еще проще вообще внешнего провайдера взять)

Pavel
18.09.2016
13:37:34
Я, кстати, из обсуждения выше не понял зачем блобы в базе хранить.
Система мультитенантная. Есть два приложения: "A" - админское грубо говоря, где работают администраторы, регистрируются клиенты. И "C" - клиентское (это и есть тенанты) - где клиенты после регистрации уже работают. Все это живет в одной базе, public схема для приложения A, и множество схем для копий приложения "C". Клиенты из админской части могут загружать файлы в свое приложение - вот тут и возникает проблема с распределенностью.

Google
Pavel
18.09.2016
13:38:56
При загрузке файла просто засунуть его в базу - это намного проще чем работать с объектным хранилищем, думать про пермишены всякие и целостность. В этом случае все что надо для целостности - просто регулярно делать бэкап всей базы.

Даже в случае если все сервера вдруг погорят и поломаются - просто раскатываем бэкап на новом сервере, приложение вместе с nginx само нагреет кеш - и все работает :)

Fike
18.09.2016
13:42:16
про кэш конечно удивительные рассуждения, как будто там не та же файловая система будет задействована

Pavel
18.09.2016
13:45:21
Ну так оно все само греется же, не надо никаких лишних телодвижений.

Причем на любой новой машине.

По-моему дешево и сердито ;)

Fike
18.09.2016
13:47:09
"выберу-ка я из вариантов греть или не греть вообще первый, так хоть чая вскипячу"

blkmrkt
18.09.2016
18:52:25
SSD <-> GPU DMA http://kaigai.hatenablog.com/entry/2016/09/08/003556

Yury
18.09.2016
18:57:51
боян :)

А вообще мне идея AMD нравится больше, когда они ssd прям в видео карту воткнули.

жалко, что у нас особо некому таким пользоваться...

Sergey
18.09.2016
20:18:32
Добрый вечер

Может кто знает, есть ли в постгрес аналог DBCC INDEXDEFRAG?

И нужен ли он тут?

Stanislav
18.09.2016
20:33:50
https://www.postgresql.org/message-id/5797D5A1.5030009%40agliodbs.com почти мой случай

Yury
18.09.2016
20:35:46
в остальном кажется ваакуума хватает

blkmrkt
18.09.2016
22:53:39
А я все еще борюсь с мертвыми pg_toast, не могу из-за них перенести последнюю таблицу profiles на новый сервер, и крашится все на вот этом тосте: pg_toast_16455. Делал REINDEX pg_toast.pg_toast_16455, но не помогло. Теперь сделал VACUUM FULL profiles - вакуум только что завершился с той же ошибкой, с которой прерывается pg_dump: vw=# VACUUM FULL profiles; ERROR: missing chunk number 0 for toast value 38643697 in pg_toast_16455 Поможет ли pg_repack? Остается наверное написать скрипт с хандлингом exception для перебора каждой записи таблице, да?

Страница 93 из 1062