领课教育开源系统-Spring Cloud Zuul 如何上传大文件
目前领课教育系统使用Spring Cloud Zuul作为网关组件,上传文件会先经过网关(gateway),然后再交给后端微服务(course)。这种情况下,网关(zuul)的堆内存会随着文件的传入而变化,小文件影响不大,但是大文件会使得堆内存急速上升,当网关的内存设置小于上传文件的大小时,就会出现OOM异常。在开发期间,上传的文件一般不大,很难发现。
官方文档介绍:
如果你使用@EnableZuulProxy,你可以使用代理路径来上传文件,只要文件很小,它就可以工作。对于大文件,有另一种路径,可以绕过Spring DispatcherServlet(以避免多部分处理)在“/zuul/”中。换句话说,如果你有zuul.route.customers=/customers/,然后您可以将大文件发布到/zuul/customers/。
- 所以在领课教育系统中,看到上传的文件都会默认加上:/zuul作为前缀
特别注意
虽然这样是绕过Spring DispatcherServlet,但是超时时间一样要设置
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=240000 ribbon.ConnectTimeout=10000 ribbon.ReadTimeout=60000 特别说明:ribbon.ConnectTimeout和ribbon.ReadTimeout里面的参数是大写的,当时自己以为是官方的错误,擅自修改为小写,结果不生效。
另外的解决方案
如果使用到nginx的情况,可以让nginx的直接转发到后端微服务(course),不经过网关,也可以解决这个问题。这里也需要注意:ngixn对上传文件的大小也有现在,需要设置:
keepalive_timeout 1800s; client_max_body_size 2048m;
这里也给出nginx转发的配置
location /zuul/ { proxy_pass http://course-ip:port/; }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一文讲透数据库,以后别说你不懂数据库
“数据分析需要懂数据库的知识吗?” 李老头最近经常听到这样的问题,很多新人都觉得如果自己只做业务,不走技术线,是不是就可以不用学习数据库了?是不是面试的时候就不需要准备了? 毕竟很多新人刚进公司,一看到数据库里各种表的复杂链接方式,就开始犯起头疼了,更有甚者连SQL与数据库的区别都不知道,数据仓库这些概念就更不用提了。 然而,让很多人失望的是,数据库知识是我在面试新人时最常问的问题,没有之一。 数据分析需要懂数据库吗? 对数据库的了解程度,要看你定位在数据分析的哪一种层次,我见过一些数据分析人员不懂数据库,都是基于 Excel 的文件源做数据分析,他们更擅长业务。 但是,他们通常情况下必须依赖于 IT 部门的支持,需要 IT 部门提供一些基本的分析数据。凭借对业务的理解,对业务数据的理解也一样可以做好数据分析工作。 也有一类数据分析人员,本身就是从数据库、商业智能BI的角色转向纯粹的数据分析人员,通过对业务的理解加上数据处理的技能和知识在分析领域也可以做的很好。 他们的一大优点就是在很大程度上不需要过度依赖IT部门,给他们一定的权限就可以自己动手直接面对统一的数据源做数据分析,有时一条...
- 下一篇
物联网开发服务创建组件图文详解!
云栖号快速入门:【点击查看更多云产品快速入门】不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 本文介绍如何在组件开发工作台创建组件。 背景信息 在IoT Studio的组件开发工作台开发组件前,需要先创建新组件并进行相关信息设置,用于定义组件名称和功能特性等,便于开发者使用。 新增组件 1.在物联网平台控制台左侧导航栏,单击IoT Studio > 应用开发。2.在快速开始物联网应用开发页面的开发工具模块,单击组件开发。3.在组件开发 > 个人组件页面,单击新建组件。4.在新建组件对话框,设置组件基本信息(见下表)。 5.单击确认。组件创建完成,进入IoT Studio组件开发页面,开始进行个人组件开发,详细内容请参见开发个人组件。 查看组件列表 您可在组件开发 > 个人组件页面,查看到已创建的个人组件列表及组件的相关信息。 您可在搜索框中输入搜索关键词,定位搜索或筛选目标组件。 定位到目标组件,在组件右侧的操作栏支持以下操作: 单击预览,查看组件显示效果。 单击开发进入组件开发页面,编辑或上传组件代码包。有关组件编辑和开发内容,请参见编辑...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启