Browse Source

manual gc every crawl

zu1k 5 years ago
parent
commit
f2275c7bdc
4 changed files with 12 additions and 3 deletions
  1. 1 2
      internal/app/task.go
  2. 4 0
      internal/cron/cron.go
  3. 4 1
      internal/database/db.go
  4. 3 0
      internal/database/proxy.go

+ 1 - 2
internal/app/task.go

@@ -5,9 +5,8 @@ import (
 	"sync"
 	"time"
 
-	"github.com/zu1k/proxypool/internal/database"
-
 	"github.com/zu1k/proxypool/internal/cache"
+	"github.com/zu1k/proxypool/internal/database"
 	"github.com/zu1k/proxypool/pkg/provider"
 	"github.com/zu1k/proxypool/pkg/proxy"
 )

+ 4 - 0
internal/cron/cron.go

@@ -1,6 +1,8 @@
 package cron
 
 import (
+	"runtime"
+
 	"github.com/jasonlvhit/gocron"
 	"github.com/zu1k/proxypool/internal/app"
 )
@@ -13,4 +15,6 @@ func Cron() {
 func crawlTask() {
 	_ = app.InitConfigAndGetters("")
 	app.CrawlGo()
+	app.Getters = nil
+	runtime.GC()
 }

+ 4 - 1
internal/database/db.go

@@ -8,6 +8,7 @@ import (
 
 	"gorm.io/driver/postgres"
 	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
 )
 
 var DB *gorm.DB
@@ -20,7 +21,9 @@ func connect() (err error) {
 	if url := os.Getenv("DATABASE_URL"); url != "" {
 		dsn = url
 	}
-	DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
+	DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
+		Logger: logger.Default.LogMode(logger.Silent),
+	})
 	if err == nil {
 		fmt.Println("DB connect success: ", DB.Name())
 	}

+ 3 - 0
internal/database/proxy.go

@@ -26,6 +26,9 @@ func InitTables() {
 }
 
 func SaveProxyList(pl proxy.ProxyList) {
+	if DB == nil {
+		return
+	}
 	proxies := make([]Proxy, pl.Len())
 	for i, p := range pl {
 		proxies[i] = Proxy{