
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. (только не кладите всё в одну папку)

Pavel
18.09.2016
12:59:30

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

Yury
18.09.2016
13:02:11

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 будет что кеш не справится ?

Айтуар
18.09.2016
13:03:18

Google

Yury
18.09.2016
13:03:35

Pavel
18.09.2016
13:04:06

blkmrkt
18.09.2016
13:04:23

Yury
18.09.2016
13:05:01

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
если мажорная версия та жа то всё должно быть ок
и у вас там одна архитектура процессора

Roman
18.09.2016
13:07:25

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

Айтуар
18.09.2016
13:07:55

Roman
18.09.2016
13:09:54

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

Google

ptchol
18.09.2016
13:12:03

Roman
18.09.2016
13:12:48

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

Pavel
18.09.2016
13:17:31

Darafei
18.09.2016
13:19:19

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

Roman
18.09.2016
13:20:32

ptchol
18.09.2016
13:20:50

Roman
18.09.2016
13:21:26

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

Pavel
18.09.2016
13:21:48

Roman
18.09.2016
13:22:00

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. если вам жалко СУБД которая будет пухнуть.

Roman
18.09.2016
13:22:55

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

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

Pavel
18.09.2016
13:24:16

Sergey
18.09.2016
13:27:51

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

ptchol
18.09.2016
13:29:52
но это везде и всегда так )

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 для перебора каждой записи таблице, да?

Айтуар
19.09.2016
06:30:59