浅谈beego默认处理静态文件性能低下的问题

 更新时间:2017年06月17日 09:10:17   投稿:jingxian  
下面小编就为大家带来一篇浅谈beego默认处理静态文件性能低下的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

今天使用ab(apacheBench)测试了一下beego的性能。

3Kbytes动态文件,在i3上可以达到每秒1W次响应的性能。

但是在测试静态文件时,beego出现了问题。

ab测试参数:100次请求,并发数5。

问题表现:70%的请求直接失败,连接断开。

按道理来说,一个web server框架,静态文件的性能,应该是高于动态文件性能的。

在动态文件性能达到1W/s的情况下,没理由静态文件性能这么低下。

然后查看了一下beego的源代码。发现beego在处理动态文件请求时,有缓存。而处理静态文件时,没有缓存。

简图:

beego----动态文件----缓存-----文件系统
beego----静态文件-------------文件系统

处理静态文件时,是直接使用文件系统。一般的文件系统的并发量当然很低。

这就是beego的静态文件处理性能低下的原因。

所以在进行网站部署时,需要将相应的静态文件,放置到nginx上进行处理(相同的文件,nginx的静态文件处理可以达到每秒1.5W次响应。

beego与nginx通过反向代理连接。这样才能最大限度地保证网站性能。

以上这篇浅谈beego默认处理静态文件性能低下的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文教你如何优雅处理Golang中的异常

    一文教你如何优雅处理Golang中的异常

    我们在使用Golang时,不可避免会遇到异常情况的处理,与Java、Python等语言不同的是,Go中并没有try...catch...这样的语句块,这个时候我们如何才能更好的处理异常呢?本文来教你正确方法
    2022-11-11
  • go mutex互斥锁使用Lock和Unlock方法占有释放资源

    go mutex互斥锁使用Lock和Unlock方法占有释放资源

    Go号称是为了高并发而生的,在高并发场景下,势必会涉及到对公共资源的竞争,当对应场景发生时,我们经常会使用 mutex 的 Lock() 和 Unlock() 方法来占有或释放资源,虽然调用简单,但 mutex 的内部却涉及挺多的,本文来好好研究一下
    2023-09-09
  • Go缓冲channel和非缓冲channel的区别说明

    Go缓冲channel和非缓冲channel的区别说明

    这篇文章主要介绍了Go缓冲channel和非缓冲channel的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • go实现for range迭代时修改值的操作

    go实现for range迭代时修改值的操作

    这篇文章主要介绍了go实现for range迭代时修改值的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Golang AGScheduler动态持久化任务调度的强大库使用实例

    Golang AGScheduler动态持久化任务调度的强大库使用实例

    这篇文章主要为大家介绍了Golang AGScheduler动态持久化任务调度的强大库使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Go工具链之go tool fix用法详解

    Go工具链之go tool fix用法详解

    go tool fix 是 Go 工具链中的一个命令,作用是把指定 Go 程序代码包中的的所有旧版本代码修正为新版本的代码,本文将简单介绍一下go tool fix的使用方法,感兴趣的小伙伴可以参考阅读下
    2023-07-07
  • 从Context到go设计理念轻松上手教程

    从Context到go设计理念轻松上手教程

    这篇文章主要为大家介绍了从Context到go设计理念轻松上手教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Golang IOT中的数据序列化与解析过程

    Golang IOT中的数据序列化与解析过程

    这篇文章主要介绍了Golang IOT中的数据序列化与解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Golang中tinyrpc框架的源码解读详解

    Golang中tinyrpc框架的源码解读详解

    tinyrpc是一个高性能的基于protocol buffer的rpc框架。项目代码非常少,很适合初学者进行golang的学习。本文将从源码的角度带大家了解tinyrpc框架的使用,需要的可以参考一下
    2023-01-01
  • Go语言等待组sync.WaitGrou的使用示例

    Go语言等待组sync.WaitGrou的使用示例

    本文主要介绍了Go语言等待组sync.WaitGrou的使用示例,sync.WaitGroup只有3个方法,Add(),Done(),Wait(),下面就来具体的介绍一下如何使用,感兴趣的可以了解一下
    2024-08-08

最新评论