时间:2021-05-19
背景
使用的特定的设备进行深度学习模型的推理,该机器仅仅提供了C++封装好的API进行模型的加载启动与推理,模型的训练依然是使用caffe,模型需要转化成该设备支持的格式,模型的转化这里就不在介绍。为了把模型的推理做成一种服务,只能上手C++,搭建HTTP服务,使得用户通过http服务post一张图片,服务器启动模型推理,实现模型的预测,并把结果返回给客户端。
整体框架
服务短的服务内容就是对接收的图片进行预处理,然后进行模型的推理,目前需要做的一点就是引入HTTP服务
前期调研
对于一个C++新手,前期调研当然是先进行搜索,http server c++搜处理的结果也是五花八门,有的是教你如何通过实现一个http服务器,有的是一个用第三方库,有的是直接怼一堆代码。。。知道在stackoverflow上看到了:
why
not try NGINX with fcgi-function mapping?
实现步骤
nginx这个是做代理的神器,做负载均衡的时候也经常用,只要我的客户端的内容发送的nginx上,然后nginx把数据转发给fcgi相关的应用就可以,我需要做的就是把fcgi和我的推理程序结合起来就可以。
nginx
简单说nginx就是中间商,客户端把请求发给中间商,中间商去货源地把货拿上,让后给客户回应:
客户告诉nginx 我要购买**商品,nginx就去对于的服务提供商取出对于服务并把它返回给客户。
目前需要的就是实现fcgi 部分,那么什么是fcgi?
cgi
通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
这里的标准输入输出是对应的一些环境变量主要包含有与请求相关的环境变量,与服务器相关的环境变量,与客户端相关的环境变量三大类。
fastcgi
FastCGI 实际上是增加了一些扩展功能的 CGI 、是 CGI 的改进,同样也是描述客户端和Web服务器程序之间传输数据的一种标准。
FastCGI 致力于减少Web服务器与CGI程序之间进行互动的开销,从而使Web服务器可以同时处理更多的Web请求。与 CGI 为每个Web请求创建一个新的进程不同, FastCGI 使用持续的进程来处理一连串的Web请求,这些进程由FastCGI进程管理器管理,而不是Web服务器。
为什么说是减少了互动的开销呢?这就要看两种处理方式的区别!
cgi的工作流程:
每当客户端发出一个新的请求,首先要创建一个cgi子进程,然后cgi处理完请求,有多少个连接就会有多少个cgi子进程启动,当请求量大的时候会占用大量的系统资源。
fastcgi
fastcgi 是使用持续的进程处理一连串的请求,这些进程有fastcgi的进程管理器来进行管理具体流程如下所示:
也可以这样比喻:
cgi在卖鸡蛋灌饼,等到顾客要吃的时候,他开始点火,打鸡蛋,摊饼,然后熄火。然后等待下一个顾客
fastcgi就是早餐店老版,雇佣了一帮服务员,专门做需要现场做的饭,老板只需要把订单安排下去,服务员负责盛粥煎饼。
具体步骤
工欲善其事,必先利其器,首先搭建环境把!
通过阅读不少的博客内容找到了最简单的安装步骤,好多都是通过下载源代码,然后通过make进行编译,不过对于这些比较常用的库,软件包中已经集成了。
C++开发环境安装
nginx
fastcgi
spawn-fcgi
编写运行程序
编译程序
修改nginx 配置文件
启动nginx
nginx -c /usr/local/nginx/conf/nginx.conf通过浏览器验证nginx是否正常启动http://*******:80
启动spwan-cgi进程
spawn-fcgi -a 127.0.0.1 -C 20 -p 7070 ./cgidemo总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
首先确保你的电脑里已经安装了Python和Django,接下来我们还需要两个组件,nginx服务器和flup(Python的FastCGI组件)nginx下载地
最近准备用nginx搭建了一个图片服务器,看中的就是nginx超强的静态文件处理能力。由于图片量比较大,和web服务器(也是nginx)分开运行,虽然web服务
本文是依照张宴的Nginx0.7.x+PHP5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)编写原文地址http://blog.s
本文主要介绍一些Nginx做图片服务器的简单配置,但不包括Nginx的安装部署以及实现原理。配置步骤下载nginxWindowsnginx安装教程及简单实践配置
ubuntu下的nginx服务器配置详解1.nginx服务器的安装sudoapt-getinstallnginx2.nginx服务器的启动sudo/etc/in