我应该使用什么标准来评估 Perl“应用程序服务器”(mod_perl 替代品)?

2024-03-30

简洁版本:

我应该使用什么标准来评估 Perl“应用程序服务器”(mod_perl 替代品)的可能候选者?

我们正在寻找某种框架,它允许重复执行各种 Perl 程序(作为服务),而不会产生以下成本:

  1. 每次执行时重新启动 perl 解释器一次

  2. 每次执行时加载/编译 Perl 模块一次

(这都是运行 mod_perl 提供的好处)

Notes:

  • 我们不太关心 mod_perl 提供的任何额外好处,例如深度 Apache 集成。

  • 这将是一个纯粹的应用程序服务器,这意味着不需要任何特定于 Web 的功能(如果应用程序服务器提供它,这不是问题,只是不需要)。

  • 我们当然会考虑明显的标准(原始速度、生产就绪的稳定性、积极的开发、在我们关心的操作系统上运行的能力)。我感兴趣的是我们可能希望从这样的框架/服务器中得到的不那么琐碎和微妙的事情。

背景:

在 $work 中,权力决定他们想要取代当前的情况(在 Embperl 中开发简单的 Web 应用程序并通过 Apache/mod_perl 进行部署)。

决定使用(自行开发的)MVC 系统,该系统将具有用于视图的 Java Spring 前端;并且控制器将解析后端服务请求到执行模型职责的每个应用程序服务(不要纠结于此细节 - 它与主要问题不太相关)。

后端服务的选项之一是 Perl,这样我们就可以利用所有现有的 Perl IP(库、webapp 后端代码),而不必将其 100% 移植到 Java。

总结一下:

    | View    | Model/app | Model loaded/executed by:                          |
================================================================================
OLD | Empberl | Model.pm | mod_perl has Model.pm loaded, called from view.epl  |
NEW | Java    | Model.pm | perl generic_model.pl -model Model (does "require") |
================================================================================

现在,那些进行过 Perl Web 开发一段时间的人会立即注意到新设计中最明显的问题:

    | Perl interpreter starts  | Perl modules are loaded and compiled |
=======================================================================
OLD | Once per mod_perl thread | Once per mod_perl thread
NEW | Once per EVERY! request  | Once per EVERY! request              |
=======================================================================

换句话说,在新模型中,我们mod_perl 作为持久服务器端应用程序容器不再具有任何性能优势!

因此,我们正在寻找可能的应用程序容器来提供相同的功能。

(作为旁注,是的,我们考虑过简单地使用 mod_perl 运行 Apache 实例作为这样的应用程序容器,作为一种可行的可能性。但是,由于不需要 Web 功能,我想看看是否有其他选项可以符合要求)。


Starman https://metacpan.org/module/Starman是一个高性能预分叉 PSGI/Plack Web 服务器,可以在该上下文中使用。构建服务无状态 JSON 对象的 REST 应用程序很容易(这是一个简单的用例)。

Starman 是一个生产就绪的服务器,在反向代理后面安装一组 Starman 实例非常容易(这个问题可能对你有帮助 https://stackoverflow.com/questions/4003714/nginx-and-perl-fastcgi-vs-reverse-proxy-psgi-starman),用于缩放目的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用什么标准来评估 Perl“应用程序服务器”(mod_perl 替代品)? 的相关文章

  • 从 Perl 中的字符串中删除标点符号

    如何从 Perl 中的字符串中删除除空格之外的所有标点符号 s punct g
  • 使用 Getopt::Long 解析参数的最简洁方法

    我使用 GetOpt 来解析命令行参数 我想添加一个新选项 multi 它应该得到一个如下所示的字符串 key1 abc key2 123 key3 xwz 我不知道用户想要提供多少个自定义密钥 但他可以提供 minimax5键 另外 我想
  • Moose:属性值更改时缓存的计算结果会过期吗?

    在我们的类中 我们有一个模式 我们创建一个属性来表示 计算值 出于显而易见的原因 我们想要缓存计算值 然后当基础值之一发生变化时使缓存失效 所以我们目前有这个 package FooBar use Moose has foo gt acce
  • 如何区分浏览器选项卡中的会话?

    在使用 JSP 和 Servlet 以 java 实现的 Web 应用程序中 如果我在用户会话中存储信息 则同一浏览器的所有选项卡都会共享该信息 如何在浏览器选项卡中区分会话 在这个例子中
  • 如何在正则表达式中区分数字和ip地址?

    例如 如果我们查看 5 56 和 183 55 0 144 基本上 当你做这样的事情时 d d 它匹配 5 56 189 55 和 0 144 有没有办法通过正则表达式仅匹配数字而不匹配 ip 地址的部分 我尝试使用前瞻 但我不知道它应该是
  • Perl 中的全局变量、子程序变量问题

    如何将子程序变量值转移到另一个子程序变量中 我可以使用全局变量吗 sub foo my myvar Hello sub foo1 my myvar1 myvar how can I get the Hello from myvar 我尝试使
  • 如何为自定义 Perl 模块选择一个不与内置或 CPAN 包名称冲突的包名称?

    我已阅读模块上的 perldoc http perldoc perl org perlmod html 但我没有看到关于命名包的建议 这样它就不会与内置或 CPAN 模块 包名称冲突 过去 为了开发本地Session pm模块 我使用我公司
  • 如何在 tomcat 上部署 Java Web 应用程序 (.war)?

    我有一个 warJava Web 应用程序的文件 现在我想将它上传到我的 ftp 服务器 以便我可以执行它 我应该执行哪些步骤来运行它 webapp的上下文路径是 mywebapp Edit 实际上 我的 ftp 服务器名称是ftp bil
  • 在读取正文之前拒绝 HTTP 请求

    我正在开发一个网站 用户需要上传一些非常大的文件 该网站是用 PHP 编写的 在某些情况下 我想根据标头拒绝文件 理想情况下 我想在收到标头后立即拒绝请求 而不读取正文 如果标头足以表明该文件应被拒绝 则没有理由读取 200M 的文件 此外
  • 找不到 DBI.pm

    我正在尝试启动这个脚本 usr bin perl use DBI my dbh DBI gt connect dbi Oracle host lonlin2 sid TIMFX1AD port 1524 xbsesdbo xbsesdbo1
  • 将相同匹配模式的连续 2 行放入单行中

    我想解析这组行 以便如果得到相同的模式 例如 lt email protected cdn cgi l email protection gt 在连续的行中 它应该以单行形式打印 并在两行之间使用 q2VDWKkY010407 222187
  • 如何使用 Perl 正则表达式匹配字符串末尾/开头处的空格或单词?

    我想找到与我的正则表达式匹配的序列 它们应该位于由空格包围的字符串中间 末尾或开头或者是字符串中唯一的东西 Example 我们假设序列 qwe45rty 就是我们正在寻找的 我希望能够对所有这些因素都抱有积极的态度 qwe45rty qw
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 由于 lpcap,CPAN 安装 Net::Pcap 和 Packet 模块失败

    最近 我尝试通过 cpan 安装 perl 模块 Net Packet 和 Net Pcap 但它抱怨找不到 pcap 库 所以我正在搜索 cpan 在安装模块时是否接受外部 lib include 目录 但到目前为止还没有运气 looki
  • 如何将 Perl 转换为 C?

    有没有可用的工具可以将 Perl 源代码转换为 C 源代码 什么平台都可以 对此的规范答案是MJD 的 为什么不将 Perl 翻译成 C http www perl com pub a 2001 06 27 ctoperl html
  • 如何用perl逐句读取文本文件?

    我想逐句读取文本文件 我的问题是下面的代码仅根据时期分开 usr bin perl use strict use warnings my file data txt open FILE file my buffer while my sen
  • Perl:HTTP::微小删除留下损坏的锚标记

    我编写了一个脚本 该脚本收集从数据库读取的缓冲区内的所有 URL 检查该页面是否仍然存在 并使用 HTTP Tiny 从缓冲区中删除 URL 如果该 URL 无法访问或返回无效 问题是 HTTP Tiny 删除左锚标记 例如此处无效的文本
  • Perl 正则表达式图灵完备吗?

    我见过 Ruby 和 Perl 程序员做了一些事情复杂的代码挑战 https codegolf stackexchange com questions 3596 regex validating regex完全用正则表达式 这前瞻和后瞻 h
  • 纯基于网络的版本控制系统

    我的托管服务当前不允许在其服务器上运行 允许 svn git cvs 我真的希望能够将我的开发计算机上的当前源代码与我的生产服务器 同步 我正在寻找一个纯php python ruby版本控制系统 不只是一个client对于版本控制系统 不
  • Text::平衡和多行 xml

    看来我有点失落了 我需要解析一个大的 大约 100 mb 且相当难看的 xml 文件 如果我使用parsefile 它返回错误 文档元素后的垃圾 但它会很乐意解析文件的较小元素 所以我决定将文件分解为元素并解析它们 由于不鼓励使用正则表达式

随机推荐

  • ApplicationListener 的注解版本及类似接口

    您可以使用如下代码根据 Web 服务关闭 或刷新 启动 的时间执行一些事件 public class APIService implements ApplicationListener
  • 使用 jquery 移动元素

    我如何使用 jQuery 来移动元素 position absolute left 169px top 182px to position absolute left 169px top 230px 清晰的移动不仅是CSS 它也必须是移动的
  • 在 C# 中使用 ActiveX

    我有这样的 JavaScript 代码 o new ActiveXObject ASDFsome Application utilites WScript CreateObject ASDF Utilites UTF Converter u
  • 在记事本++中选择并删除整个列

    有没有办法在记事本 中选择并删除整个列 假设notepad 中有这样一条日志 Dec 14 14 49 34 Dec 14 14 49 35 Dec 14 14 49 36 Dec 14 14 49 37 我想选择并删除 JustDec在上
  • 重用 Runnable 的最佳方式

    我有一个实现的类Runnable目前我正在使用 Executor 作为线程池来运行任务 将文档索引到 Lucene executor execute new LuceneDocIndexer doc writer 我的问题是我的 Runna
  • fancyBox 3 中的转换

    是否可以指定在 fancyBox 3 中使用哪个转换 我对 3 个转变感兴趣 打开幻灯片 画廊 在幻灯片之间导航 关闭幻灯片 图库 默认情况下 fancyBox 3 对不同类型的内容使用不同的过渡 a href img jpg img sr
  • Android 意图数据库

    是否有一个意图数据库可以搜索发布公共服务的应用程序 例如 我可能有一个关于可以应用于照片应用程序中的照片的过滤器的想法 但是我应该出于什么目的发布我的过滤器以便其他应用程序可以找到它并使用它 所以问题是是否有一个或多或少标准的意图数据库以及
  • 如何在容器化世界中独特地解决“流程”?

    这是一个普遍问题 但出于争论的目的 您可以假设我们有一组通过 AMQP 和 HTTP 组合进行通信的进程 有两种具体情况需要考虑 最简单的一个 Q 如果 A 向 B 发送消息 B 如何识别 A 发送回复的位置 A A 必须以某种方式告诉 B
  • 如何在悬停时更改父
  • 的样式
  • 我有一个 WordPress 网站 在我的本地主机上 它使用 ul 用于自定义菜单 我怎样才能改变CSS li 悬停时only如果它有一个 ul 子菜单 所有主菜单项都有一个边框半径 我想在当前项目 下面的服务 上删除它 例如 div cl
  • 我可以使用 Jython 运行 numpy 和 pandas

    我们有一些 Java 代码想要与计划用 Python 编写的新代码一起使用 因此我们对使用 Jython 感兴趣 然而 我们还想使用 numpy 和 pandas 库在此 Python 代码中进行复杂的统计分析 是否可以从 Jython 调
  • 提高 Android 位图上 getpixel() 和 setpixel() 的速度

    All 当我注意到有多慢之后getPixel and setPixel是 不确定是哪一个 猜想两者都不是涡轮增压的 我快速编码了一个容器Bitmap使用int 数组来处理位图操作 已经 它明显更快 但这还不够 请问您能建议如何进一步加快速度
  • 使用 Scala 中的可变参数

    我正在抓狂地试图弄清楚如何执行以下操作 def foo msf String o Any os Any println String format msf o List os 我必须用一个来声明该方法是有原因的o and an os Seq
  • 如何在 RXJS 中启动和停止可观察的间隔?

    我有一个非常简单的 timeInterval 可观察对象 我想在不断开订阅者连接的情况下启动 停止传输 无论可观察状态如何 都应该坐下来等待 有可能吗 如果可以的话怎么办 var source Rx Observable interval
  • 在 MS-Access 中插入带有日期时间的 SQL 命令

    我正在 MS Access 2007 中尝试以下查询 但在时间字段上失败 INSERT INTO LOG EMPLOYEECODE STATUSID LOCATIONID TIME DURATION SHIFTID LATECOMING E
  • 创建索引需要很长时间

    我在 MongoDB 中创建了一个集合 其中包含11446615文件 每个文档具有以下形式 id ObjectId 4e03dec7c3c365f574820835 httpReferer http www somewebsite pl a
  • wamp 本地主机上的 Amazon S3 SSL 错误

    我尝试在本地主机上使用 PHP Amazon S3 进行测试 但不断收到相同的错误 致命错误 未捕获异常 cURL Exception 消息为 cURL 资源 资源 ID 69 cURL 错误 SSL 证书问题 请验证 CA 证书没问题 详
  • java 的 System.getProperty("user.dir") 在 .NET 中的等价物是什么?

    我试图获取单元测试中文件的完整路径 该文件位于项目的文件夹中 我尝试使用 Directory GetCurrentDirectory 但这会返回我的测试正在运行的目录 我想要项目 或解决方案 的目录 而不必在其中进行硬编码 然后我可以附加文
  • angular2:如何将对象复制到另一个对象中

    请帮助我使用 Angular 2 将对象复制到另一个对象中 在 Angular 中 我使用 angular copy 将对象复制到旧对象的松散引用 但是 当我在 Angular 2 中使用相同的方法时 出现以下错误 错误 角度未定义 Sol
  • React Router v4 - 如何防止重定向循环?

    我想要实现的目标是拥有我的App如果状态的 uid 为 null 则组件重定向到 login 路由 重定向工作正常 如果 uid 为空 它将始终将您重定向到 login 但问题是一旦您进入 login 路线 它就不会停止重定向 抛出的错误是
  • 我应该使用什么标准来评估 Perl“应用程序服务器”(mod_perl 替代品)?

    简洁版本 我应该使用什么标准来评估 Perl 应用程序服务器 mod perl 替代品 的可能候选者 我们正在寻找某种框架 它允许重复执行各种 Perl 程序 作为服务 而不会产生以下成本 每次执行时重新启动 perl 解释器一次 每次执行