英文:
Go webserver how is the performance stability, in terms of long run stability compared to Tomcat, Apache?
问题
我一直在考虑是否使用以下工具来代替:
- Tomcat
- Apache
- 轻量级Web服务器
- PHP
- Ruby
- JSP
为什么不将我的项目转换为Go语言呢?因为在Go语言中:
- 内置了Web服务器
- 我甚至不需要依赖于PHP、Ruby、JSP
- Go解决了跨平台问题,可以在FreeBSD、Linux、Solaris(Windows、Mac、Android、Tizen)上运行
- 无需维护Apache、Tomcat或其他Web服务器
- 浏览器的速度比其他Web服务器脚本语言要快得多。
但我担心的是,与其他Web服务器相比,Go Web服务器的稳定性如何。
有人以前做过这个吗?还是只有我一个人在为生产发布构建这样的项目?
英文:
I have been thinking instead of using:
- Tomcat
- Apache
- Lightweight webserver
- PHP
- Ruby
- JSP
Why not switch my projects to Go language. Because there i have:
- webserver built in
- i do not even need to depend on PHP, Ruby, JSP
- Go solves cross-platform such as: runs on FreeBSD, Linux, Solaris (Windows, Mac, Android, Tizen)
- nor Apache nor Tomcat nor other webserver maintainence
- speed of browser would be extreamly faster then other web server scripting languages.
But one thing i am worried about, which is the stablity of Go webserver compared to other webservers.
Has anyone done this before or am i alone building such projects for production releases?
答案1
得分: 19
没有稳定性问题。
我有一些完全使用Go编写的Web服务器,运行了几个月,每月处理大约一百万个查询,没有任何问题(主要是通过GET、POST和Websockets传输JSON数据)。
它们运行在64位的Ubuntu服务器上,但我猜你很难产生那么多人谈论的32位bug,尤其是在一个Web服务器上。
如果没有特殊原因,不要使用前端:只使用Go就可以轻松构建完整的Web应用程序。
你不会感到孤单。我认为Go特别适合构建长时间运行的服务器。Goroutines和channels使得处理用户请求和长期任务变得非常容易(或者,例如,在回答HTTP请求后对用户查询进行后处理,这在PHP中并不容易,在Java中如果要正确地完成这个任务则需要太多的代码行数)。
英文:
There are no stability problem.
I have a few webservers 100% in go that run for months, serving about a million queries per month without any problem (mostly json, through GET, POST, and websockets).
They're on 64 bits ubuntu servers but I guess you would have difficulties producing the so much gossiped about 32 bits bug, especially with a web server.
Don't use a front-end if you have no specific reason : It's easy to make a complete web application just using Go.
You will be far from alone. In my opinion Go is especially well suited to build long running servers. Goroutines and channels makes it really easy to handle both user requests and long term tasks (or, for example, do the postreatment of user queries after you answered the http query, which isn't so easy in php and is too many LOC in java if you want to do it properly).
答案2
得分: 1
为什么不使用内置的Web服务器并设置一个反向代理,比如Varnish,或者让Nginx充当代理?
http://wiki.nginx.org/ReverseProxyCachingExample
英文:
Why not using the Build in Webserver and set up a Reverse Proxy like Varnish, or let Nginx act as Proxy?
答案3
得分: 0
使用Nginx作为前端,并确保您使用的是64位版本的Go。32位版本存在严重的稳定性问题,这对于任何长时间运行的进程都是一个阻碍。
英文:
Use Nginx as the front-end and make sure that you are using the 64bit version of Go. The 32bit version has severe stability problems which are a show stopper for any long-running processes.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论