@proGO

Страница 571 из 1674
ainu
27.03.2017
21:01:46
по разным папкам?

что gramework, что fasthttp их делает

Kirill
27.03.2017
21:02:07
слишком уж хороший прирост, чтобы от этого отказываться)

Google
ainu
27.03.2017
21:02:56
выгода прироста понятна

непонятно почему не /tmp

Kirill
27.03.2017
21:03:30
ну — не хочешь файликов .gz — не включай компрессию)

непонятно почему не /tmp
на линупсах получается быстрее

на ext4 и xfs

ainu
27.03.2017
21:04:11
это уже просто любопытство, может там дао скрыто

быстрее чем /tmp?

то есть tmpfs же там, оперативка и все такое

Kirill
27.03.2017
21:05:10
быстрее — мы проверили состояние файла и забрали .gz из той же директории

и ты не понял идею

мы отдаём с диска файлы, которые уже были запрошены, но не были запрошены достаточно недавно, чтобы они остались в памяти

тогда мы из такого вот персистентного кеша отдаём)

ainu
27.03.2017
21:14:53
Это у меня зашор от пхп пошел. Привык что есть папка вроде uploads или storage - в нее права на запись, и она меняется. Или /tmp. Остальные директории нетленны, зачастую у запускающего юзера (nginx/apache и т.д.) даже прав на изменения нет. Изменения через git pull например. и обычно в папках /js не появляется js.gz - так как нет прав на запись. Исключения бывает - например редактор tinymce имеет пакер, создающий gzip файл в директории с яваскриптом. Когда надо сделать кеш - в папке cache создается. Например для файла /app/foo/bar.js - /cache/app/foo/bar.js.gz Идея в том, что cache почистить можно целиком всю. При этом она помещается в .gitignore, а директория js на вопрос git status ответит "всё чисто, изменений нет". Но когда речь о скорости, тут конечно слов нет.

Google
Kirill
27.03.2017
21:16:53
можно опцию сделать, в принципе

это из коробки я хочу сделать максимальную производительность

хочешь замедлить — делай что-нибудь типа изменения настроек %)

ainu
27.03.2017
21:18:18
лишний if - 0.3 наносекунды

а если опция в оперативке, то 10

Kirill
27.03.2017
21:19:58
понятное дело, if будет при инициализации, а не в хендлере

ainu
27.03.2017
21:21:04
ServeDirNoCacheCusomWithGzFilesInTmp

нет, не стоит

Кому надо Middleware сделает

В конце концов

@kirilldanshin только что заметил

https://godoc.org/github.com/gramework/gramework#App.ServeDirNoCacheCusom буквы t не хватает

Kirill
27.03.2017
21:26:48
фублеать %))

ServeDirNoCacheCusomWithGzFilesInTmp
нет. ServeFS(*FSOpts) func(*Context)

хотя

кому надо — есть поддержка func(ctx *fasthttp.RequestCtx)

могут взять и сделать что угодно

Google
ainu
28.03.2017
07:05:58
@kirilldanshin У греймворка есть лимит на одновременное подключение? Паника падает, если раз 3-4 в секунду запросить вот такое:

app.GET("/api/test/*list", func(ctx *gramework.Context) { tableName := ctx.RouteArg("list")[1:] if err := ctx.JSON(tableName); err != nil { ctx.Err500() } })

slice bounds out of range

т.е. иногда RouteArg("list") отличается



Споймал.

на 12-м обновлении страницы вместо "sd" вывел ""

Kirill
28.03.2017
07:11:48
Интересно, такого не происходило ни разу

Посмотрю, спасибо

ainu
28.03.2017
07:16:51


это я F5 нажимал

ainu
28.03.2017
07:17:19
то есть 5.5 секунд, 19 запросов

Kirill
28.03.2017
07:17:37
А это уж совсем странно

ainu
28.03.2017
07:50:24
А это уж совсем странно
Сделал повторяющий код

https://pastebin.com/Yps6xrWa

ОТкрываем http://localhost:8089/asd

видим "/asd"

Нажимаем F5 раз 20 - видим ""

Kirill
28.03.2017
07:51:19
А вот есть routearg, который с ошибкой

Google
Kirill
28.03.2017
07:51:33
Посмотри - он что-то ловит?

ainu
28.03.2017
07:53:14
Kirill
28.03.2017
07:53:32
Я понял)

Я не понял тебя
То есть возвращается ли им ошибка

Я сейчас не у компа просто.

ainu
28.03.2017
07:54:06
val, err := ?

Kirill
28.03.2017
07:55:40
val, err := ?
RouteArgErr

Угу

Admin
ERROR: S client not available

ainu
28.03.2017
07:57:03


есть



Сейчас сам покопаюсь

Quet
28.03.2017
07:58:08
ainu, а зачем взял именно этот фреймворк, есть же которые давно в продакшене и без детских болезней

Kirill
28.03.2017
07:59:30
Принято, спасибо. Странно, что на линупсе такого не ловится.

ainu
28.03.2017
08:00:27
ainu, а зачем взял именно этот фреймворк, есть же которые давно в продакшене и без детских болезней
pet project, острие технологий. К тому же API понравилось. Не выстрелит - вернусь на net/http

Quet
28.03.2017
08:01:05
го и "острие технологий" в одном предложении это смешно понятно )

ainu
28.03.2017
08:05:24
c.UserValue(argName) == nil

Kirill
28.03.2017
08:06:52
c.UserValue(argName) == nil
угу. fasthttp возвращает nil interface{}, если не нашел ничего.

вообще — можно сделать RouteArg уже иначе, роутер-то теперь внутри

Google
Kirill
28.03.2017
08:10:05
можно напрямую класть в/брать из контекста

будет шустрее и стабильнее

ainu
28.03.2017
08:11:15
Нашёл =)

В fasthttprouter scnfdbk

вставил

case catchAll: fmt.Println ("Debug: ", n.path, path) fmt.Println ("Hits: ",n.hits)

Вывел hits:32

чуть ниже по коду есть

n.hits++ if n.hits > 32 { n.router.cache.Put(reqPath, n, tsr) } return

Дело в этой части. число 32 не просто так

fasthttprouter_tree.go, func (n *node) GetValue, swith CatchAll:

Kirill
28.03.2017
08:12:48
ага. понял.

сейчас пофикшу.

ainu
28.03.2017
08:14:04
ЧИсто из любопытства - 32 и кеш что это такое?

Kirill
28.03.2017
08:14:35
кеш — это, собственно, кеш горячих роутов

Oleksandr
28.03.2017
08:14:53
шикарное именование

ainu
28.03.2017
08:15:51
Если закомментировать if n.hits > 32 { n.router.cache.Put(reqPath, n, tsr) } то все станет норм, но я понимаю что это неправильно.

т.е. если я одним роутом пользуюсь 1000 раз в секунду, а вторым раз в год, то первый будет быстрее отрабатывать?

ainu
28.03.2017
08:16:50
Круто=)

Kirill
28.03.2017
08:17:47
catchall неудобно кешировать сейчас

Страница 571 из 1674