现在这类脚本语言的运行方式基本上有三种:
1、Apache Module方式
由Apache进程用module方式来管理,web请求的静态页面和动态请求都是由apache进程内部直接处理掉了。典型的如mod_php,mod_ruby,mod_perl,mod_python。这种方式目前PHP和Perl比较多的采用。这种方式其实还是非常成熟的,apache对于内存管理已经很好,运行效率各方面都很不错。当然apache进程之间也是SNA。
但是ruby和python一般不建议用这种方式,这是因为PHP和Perl解析器的开销非常小,以Apache Module方式跑很灵活而且不怎么消耗资源;而ruby和python的解析器开销非常大,用这种方式,很浪费资源。例如一个PHP解析器跑起来才消耗2MB内存,一般也就7-8MB。但是ruby解析器跑起来就是30MB内存,消耗多的时候高达200多MB。由于很多apache进程只是在处理静态资源,完全没有必要带着一个庞大的ruby在跑,因此就显得过于浪费了。
2、FastCGI/SCGI
ruby on rails很流行使用FastCGI,Python则流行SCGI,也是SNA,比上面的方案在部署和cluster方面要灵活的多。这种方式下,web server处理静态资源,将动态请求通过Unix Socket/TCP端口发送给后面的ruby/python进程来处理。一般来说,页面带有很多静态资源,因此一次用户的动态请求实际上对应了web server的好几个连接去处理静态资源,和一个后台ruby进程去处理动态资源。因为把静态资源和动态请求分开了,所以不再需要那么多的ruby进程来跑。据说一般经验公式是:apache进程数量如果是70个的话,那么FastCGI方式的ruby进程只需要开10个,7:1的比例。另外每个ruby进程再执行一次之后就会hold住这个数据库连接,以后就会直接使用了,避免了数据库连接的开销,已经类似Java的数据库连接池的作用了。
JavaEye2.0现在开了30个FastCGI的ruby进程,但是据我观察,大部分繁忙的时候,真正被用到的ruby进程也只有十几个而已。
3、ServerVM
Java和Zope都是这种方式,一个单一进程在跑,里面很多线程分别处理不同的动态请求,shared memory方式。有时候也会在前面放一个web server提高静态资源的处理能力。这种方式大家都很熟悉了,不用多说。
分享到:
相关推荐
脚本语言支持组件则是一个中间件,它为应用提供一个接口,使得程序可以无缝地调用和执行脚本语言代码。这个组件通常包括以下几个关键部分: 1. **解释器集成**:组件内嵌了对应脚本语言的解释器,使得应用可以直接...
在应用部署方面,ACSPT脚本语言提供了丰富的API接口,使得开发者可以编写出部署任务的执行逻辑。例如,组件和脚本可以通过onEvent方法响应各种事件,诸如初始化(initialize)、启动(start)、停止(stop)、销毁...
本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...
OPS(Operations Procedure Support)是爱立信开发的一种脚本语言,专为在OSS(Operations Support System)平台上执行运维任务而设计。OSS系统通常用于电信网络管理和维护,OPS脚本语言则是为了简化和自动化这些...
本实验报告详细介绍了如何使用VBScript和JavaScript这两种脚本语言进行编程,并通过实际操作加深对它们的理解。 首先,实验要求掌握了Web服务器软件IIS的安装、配置和测试。IIS(Internet Information Services)是...
首先,Groovy是一种与Java高度兼容的脚本语言,它可以无缝地与Java代码集成,共享Java类库。Groovy代码可以被Java编译器理解,并且在运行时,GroovyShell或GroovyClassLoader等工具能够即时编译和执行Groovy脚本,这...
Lua是一种广泛应用于游戏开发、系统配置、嵌入式设备、服务器端脚本等多个领域的轻量级动态脚本语言。它的设计目标是小巧、快速、易读易写,使得程序员能够快速实现各种功能。Lua 5.1.4 Release 1 是这个版本的更新...
Python作为一种强大的脚本语言,具有丰富的库和模块支持,非常适合编写自动化部署脚本。在PXE部署中,Python可以用于创建自动化流程,如下载ISO镜像、配置DHCP和TFTP服务器、生成配置文件等。 首先,我们需要了解...
在本文档中,我们将深入探讨如何在Windows操作系统下部署和运行清华大学开发的ChatGLM-6B语言模型。ChatGLM-6B是一款强大的开源对话语言模型,具备中英双语支持和图像理解功能,其基础是General Language Model (GLM...
使用bash命令运行部署脚本: ```bash sudo bash rabbitmq部署脚本.sh ``` 注意,根据脚本内容,可能需要提供权限或进行参数传递。 7. **安全与管理**: 默认情况下,RabbitMQ不推荐开放公网访问,应配置...
在IT行业中,动态脚本编译是一项非常实用的技术,它允许程序在运行时加载和执行新的代码,极大地增强了软件的灵活性和可扩展性。在.NET框架下,C#结合CSScriptLibrary库为我们提供了这样的能力。下面我们将深入探讨...
【渔夫JS1.5服务端脚本语言】是一种轻量级的服务器端脚本工具,主要用于构建WEB服务端解决方案。它的设计目标是简洁高效,为开发者提供了一种快速开发和部署网页应用的方式。与传统的服务端语言如PHP、Python或Java...
- **执行方式**:脚本语言是解释执行的,无需编译步骤,使得其具有较强的交互性。 - **执行速度**:脚本语言的执行速度较慢,因为它需要在运行时解释每一行代码。 - **通用性**:脚本语言通常不具有广泛的通用性,...
包含62个文件,主要采用Python语言编写,并辅以Shell脚本,以实现灵活的自动化部署流程。 文件组成: - Python脚本(.py):共24个,构成部署流程的核心部分。 - 配置文件(.xml):17个,用于定义Ambari服务的配置...
2. **Lua语言**:Lua是一种轻量级的、解释型的、面向对象的、可扩展的脚本语言。它的语法简洁,易于学习,常用于游戏开发、嵌入式系统和网络服务等场景。在ngx-lua中,Lua被用于编写Nginx服务器的业务逻辑,例如处理...
8. **安装过程脚本化**:可以编写脚本来执行特定的动作,如运行安装后脚本、创建桌面快捷方式、设置环境变量等。 9. **编译与测试**:编写完成后,使用Inno Setup的编译器将脚本转换为安装程序,然后进行测试,确保...
该脚本是由shell语言编写完成,主要用于实现一键部署graylog-sidecar组件,其中包含...下载该脚本后可根据自身环境的服务器大小,来动态调整cgroup资源限制,使得该组件能以更优的方式运行。不会发生抢占系统资源现象。