Compare commits

...

3 Commits

Author SHA1 Message Date
c1997aaab5 Update makefile 2023-10-26 13:28:10 +02:00
45f6f19441 Update readme with benchmark 2023-10-26 09:51:30 +02:00
2b13292e3b Restructure 2023-10-26 09:43:24 +02:00
7 changed files with 65 additions and 15 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
/.vscode
/__debug*
/build
/tmp
/config.yaml

View File

@ -1,2 +1,8 @@
EXEC=iris-test
run:
@air
.PHONY: build
build:
@go build -ldflags "-s -w" -o ./build/${EXEC} ./app/main.go

View File

@ -14,3 +14,45 @@
## Howto
- [Password Hashing (bcrypt)](https://gowebexamples.com/password-hashing/)
## Bombardier benchmark
Pandora - Jet templating engine
```
eden@pandora:[~/apps/sandbox/golang/iris-web-framework]: bombardier -c 100 -d 10s -l http://localhost:8000 ±[A1][main]
Bombarding http://localhost:8000 for 10s using 100 connection(s)
Done!
Statistics Avg Stdev Max
Reqs/sec 10542.16 2631.23 17296.86
Latency 9.50ms 3.22ms 42.93ms
Latency Distribution
50% 8.77ms
75% 11.86ms
90% 15.31ms
95% 17.86ms
99% 23.90ms
HTTP codes:
1xx - 0, 2xx - 105258, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 28.08MB/s
```
```
eden@pandora:[~/apps/sandbox/golang/iris-web-framework]: bombardier -c 100 -d 10s -l http://localhost:8000/users ±[A1][main]
Bombarding http://localhost:8000/users for 10s using 100 connection(s)
Done!
Statistics Avg Stdev Max
Reqs/sec 1096.26 427.09 3211.54
Latency 91.08ms 80.06ms 471.41ms
Latency Distribution
50% 78.37ms
75% 156.58ms
90% 191.60ms
95% 223.49ms
99% 309.59ms
HTTP codes:
1xx - 0, 2xx - 11060, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 19.91MB/s
```

View File

@ -1,4 +1,4 @@
package main
package common
import (
"fmt"

View File

@ -1,4 +1,4 @@
package main
package common
import (
"fmt"

View File

@ -1,4 +1,4 @@
package main
package common
import (
"encoding/json"

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"iris-test/app/common"
"iris-test/app/views"
"os"
"time"
@ -15,32 +16,32 @@ import (
var redisDB *redis.Database
func createSessionEngine() *sessions.Sessions {
redisAddr := fmt.Sprintf("%s:%d", Config.Redis.Host, Config.Redis.Port)
redisAddr := fmt.Sprintf("%s:%d", common.Config.Redis.Host, common.Config.Redis.Port)
redisDB = redis.New(redis.Config{
Network: "tcp",
Addr: redisAddr,
Timeout: time.Duration(30) * time.Second,
MaxActive: 10,
Username: Config.Redis.Username,
Password: Config.Redis.Password,
Database: Config.Redis.Database,
Prefix: Config.Redis.Prefix,
Username: common.Config.Redis.Username,
Password: common.Config.Redis.Password,
Database: common.Config.Redis.Database,
Prefix: common.Config.Redis.Prefix,
Driver: redis.GoRedis(), // defaults to this driver.
// To set a custom, existing go-redis client, use the "SetClient" method:
// Driver: redis.GoRedis().SetClient(customGoRedisClient)
})
sessions_engine := sessions.New(sessions.Config{
sessionsEngine := sessions.New(sessions.Config{
Cookie: "_session_id",
Expires: 0, // defaults to 0: unlimited life. Another good value is: 45 * time.Minute,
AllowReclaim: true,
CookieSecureTLS: true,
})
sessions_engine.UseDatabase(redisDB)
sessionsEngine.UseDatabase(redisDB)
return sessions_engine
return sessionsEngine
}
func createAccessLog() *accesslog.AccessLog {
@ -83,7 +84,7 @@ func createApp() *iris.Application {
accessLog := createAccessLog()
app := iris.New()
app.Logger().SetLevel(Config.Application.LogLevel)
app.Logger().SetLevel(common.Config.Application.LogLevel)
app.Use(sessionsEngine.Handler())
app.UseRouter(accessLog.Handler)
app.RegisterView(iris.Jet("./app/templates", ".jet").Reload(true))
@ -92,9 +93,9 @@ func createApp() *iris.Application {
}
func main() {
InitCfg()
InitLogging()
InitDB()
common.InitCfg()
common.InitLogging()
common.InitDB()
app := createApp()
defer redisDB.Close()