去网络服务器的性能稳定性如何,在长期运行稳定性方面相比Tomcat,Apache


Go webserver how is the performance stability, in terms of long run stability compared to Tomcat, Apache?

我一直在思考而不是使用:

  • 雄猫
  • 阿帕奇
  • 轻量级网络服务器
  • .PHP
  • 红宝石
  • .JSP

为什么不将我的项目切换到 Go 语言。因为我有:

  • 内置网络服务器
  • 我甚至不需要依赖PHP,Ruby,JSP
  • Go解决跨平台问题,例如:在FreeBSD,Linux,Solaris(Windows,Mac,Android,Tizen)上运行
  • 也不是 Apache 或 Tomcat 或其他网络服务器维护
  • 浏览器的速度将比其他Web服务器脚本语言快得多。

但我担心的一件事是,与其他网络服务器相比,Go 网络服务器的稳定性。

以前有没有人这样做过,或者我一个人为生产版本构建这样的项目?

没有稳定性问题。

我有几个 100% 在 go 中运行数月的网络服务器,每月提供大约一百万个查询,没有任何问题(主要是 json,通过 GET、POST 和 websockets)。

它们在 64 位 ubuntu 服务器上,但我想你很难产生这么多关于 32 位错误的八卦,尤其是对于 Web 服务器。

如果您没有特定原因,请不要使用前端:仅使用 Go 即可轻松制作完整的 Web 应用程序。

你将远离孤单。在我看来,Go 特别适合构建长时间运行的服务器。Goroutines 和 channelss 使得处理用户请求和长期任务变得非常容易(或者,例如,在回答 http 查询后对用户查询进行处理,这在 php 中并不容易,如果你想正确地做到这一点,在 java 中是太多的 LOC)。

为什么不使用Web服务器构建并设置像Varnish这样的反向代理,或者让Nginx充当代理?

http://wiki.nginx.org/ReverseProxyCachingExample

使用 Nginx 作为前端,并确保使用的是 64 位版本的 Go。32位版本存在严重的稳定性问题,这是任何长时间运行的进程的障碍。