Почему так много памяти сьедает словарь?
откройте для себя memcached или redis
оно будет, конечно, помедленней, но избавит от необходимости хранить кучу хрени в рентайме и потери данных при креше приложения
redis сохранит данные и в случае перезапуска сервака
Возможно это оффтоп, а может и причина болезни, но Это просто жесть)//parse
rw := &sync.RWMutex{}
  if u.Host == "" {
    rw.RLock()
    u.Host = Host
    rw.RUnlock()
А это нормально? С трудом понимаю что здесь, но кажется внутри замыкание лишнее.go func() {
      for {
        msg := <-queueParseUrlHtml
        go func() { // <--------