Heim > Backend-Entwicklung > Golang > Der Protogen-Goroutine-Stapel überschreitet

Der Protogen-Goroutine-Stapel überschreitet

王林
Freigeben: 2024-02-09 09:48:09
nach vorne
857 Leute haben es durchsucht

Protogen Goroutine 堆栈超过

php-Editor Yuzai stellt Ihnen heute ein Problem im Zusammenhang mit Protogen vor: die Situation, in der der Goroutine-Stack überschritten wird. Bei der Entwicklung mit Protogen wird manchmal eine Fehlermeldung angezeigt, die darauf hinweist, dass der Goroutine-Stack größer ist. Das Auftreten dieses Problems kann zu Programmabstürzen oder Leistungseinbußen führen. Warum tritt dieses Problem auf und wie lässt es sich lösen? Als nächstes werden wir sie einzeln beantworten.

Frageninhalt

Kürzlich bin ich in Golang auf ein Problem bei der Codegenerierung gestoßen. Ich habe eine riesige Rohdatei und muss jetzt mithilfe eines externen Pakets die Protokollierung für die meisten Nachrichten hinzufügen. Wenn ich jedoch die Protokollierung für zu viele Felder hinzufüge, gerät es in Panik und meldet, dass der Goroutine-Stack überschritten ist. Gibt es eine Möglichkeit, Code in Blöcken zu generieren oder einfach die maximale Cache-Größe der generierten Goroutinen zu erhöhen?

Ich habe debug.SetMaxStack ausprobiert und den Build-Befehl mit Go-Code ausgeführt, aber es hat sich nichts geändert, es schien mir keine gute Lösung zu sein

Workaround

Es stellte sich heraus, dass das Problem darin lag, wie @BurakSerdar in seinem Kommentar zum rekursiven Drucken sagte im Kreislauf. Wenn Sie also so etwas haben wie:

message human {
  string name = 1;
  human child = 2;
  human parent = 3;
}
Nach dem Login kopieren

Das sollten Sie nicht tun:

message human {
  string name = 1;
  human child = 2 [(logger.field) = true];
  human parent = 3;
}
Nach dem Login kopieren

Ich glaube, das Gleiche gilt auch für andere Anpassungen, die Sie den Feldern hinzufügen möchten. Wenn Sie eine Nachricht haben, fügen Sie ein Feld mit demselben Nachrichtentyp hinzu

Das obige ist der detaillierte Inhalt vonDer Protogen-Goroutine-Stapel überschreitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage