【问题标题】:Go webserver how is the performance stability, in terms of long run stability compared to Tomcat, Apache? [closed]Go webserver 性能稳定性如何,与 Tomcat、Apache 相比,长期运行稳定性如何? [关闭]
【发布时间】:2012-04-25 13:27:26
【问题描述】:

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

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

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

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

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

以前有没有人这样做过,还是我一个人在为生产版本构建此类项目?

【问题讨论】:

  • Ruby 在标准库中也有一个网络服务器 (require 'webrick'),但我不一定会直接向用户公开它。
  • 大多数像 Go 一样的网络服务器并不是为全功能服务器而设计的;人们通常将它们作为应用程序服务器运行在 Apache 或 nginx 之后。这样,更可配置的前端可以处理诸如缓存、负载平衡、静态数据服务等事情。
  • Bill the Lizard 不只是 love 结束对 StackOverflow 真正有用的问题吗?!基于一些愚蠢的技术性。该站点旨在成为现实世界开发人员的实用问答论坛,这个问题在成为一个问题方面做得很好(答案也是如此)。我敢肯定,他觉得他正在做一些对他的生活非常有用的事情。这不是我第一次遇到这种情况 - 因此这个评论来自于多年前的 wating。

标签: php ruby apache tomcat go


【解决方案1】:

不存在稳定性问题。

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

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

如果没有特定原因,请不要使用前端:使用 Go 很容易制作完整的 Web 应用程序。

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

【讨论】:

  • +1 谈论实地体验。
  • 您是否在使用特定工具来保持活力并监控 Ubuntu 上的进程?
  • 不是今天。如果有人停止响应,我会使用一项服务提醒我,但由于我从未经历过产品崩溃,所以我现在感觉不到压力。我想如果需要,您可以使用标准工具。我发现调试周期不同于 java 或 php 之类的:在编译时或在第一次测试时(主要是数组索引错误或未分配映射...),您可以非常快速地检测到错误,而在大多数情况下其他语言错误通常是隐藏的。我也喜欢使用“go test”功能工具。编译速度快并且包含在操作中的事实使它更容易。
【解决方案2】:

为什么不使用 Build in Webserver 并设置像 Varnish 这样的反向代理,或者让 Nginx 充当代理?

http://wiki.nginx.org/ReverseProxyCachingExample

【讨论】:

  • 为什么?你为什么要?它增加了另一个必须维护和更新的抽象层。这就是提问者似乎试图避免的。添加缓存无助于稳定性,仅有助于提高性能。只有缓存生命周期才能提供额外的“稳定性”;隐藏停机时间。
【解决方案3】:

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

【讨论】:

  • 能否提供一些相关错误报告和/或新闻组/ML 讨论的链接?我也对研究原始问题感兴趣,虽然你的陈述很强烈,但似乎有点挥手;像这样的声明应该有数据支持。
  • 这是一个讨论 32 位问题的线程。 groups.google.com/group/golang-nuts/browse_thread/thread/…
  • 请注意,这个错误也可能出现在 64 位服务器上,但非常罕见,即使在 32 位服务器上您也肯定不会看到。检测它需要数年时间和特定的内存使用模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 2015-09-20
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多