文章目录
- [第六十九章 使用 NSD (UNIX® Linux macOS) - 示例 2:两个 Web 应用程序](#第六十九章 使用 NSD (UNIX® Linux macOS) - 示例 2:两个 Web 应用程序)
- [示例 2:两个 `Web` 应用程序](#示例 2:两个
Web
应用程序) - [将负载分散到多个 NSD 进程上](#将负载分散到多个 NSD 进程上)
-
- [授予 `NSD` 管理员权限](#授予
NSD
管理员权限)
- [授予 `NSD` 管理员权限](#授予
第六十九章 使用 NSD (UNIX® Linux macOS) - 示例 2:两个 Web 应用程序
示例 2:两个 Web
应用程序
要在两个独立的 NSD
安装(侦听 TCP
端口 7038
和 7039
)之间分配两个 Web
应用程序(/csp1
和 /csp2
)的负载,请将以下指令添加到 Apache
配置 (httpd.conf
):
xml
<Location /csp1>
SetEnv CSP_NSD_PORT 7038
</Location>
<Location /csp2>
SetEnv CSP_NSD_PORT 7039
</Location>
更改配置后重新启动 Apache
。
如果 NSD
的多个实例正在运行,建议将单独的实例安装在单独的目录中,每个实例维护自己的配置和日志文件副本。通过使用 NSD
的内部 HTTP
服务器,可以轻松访问每个实例的 Web Gateway
管理页面。例如:
java
http://localhost:7038/csp/bin/Systems/Module.cxw
http://localhost:7039/csp/bin/Systems/Module.cxw
将负载分散到多个 NSD 进程上
默认情况下,NSD
以双进程操作模式运行(一个父进程和一个子进程)。
但是,单个 UNIX®
进程可以启动的线程数是有限的。如果 Web
应用程序的并发负载导致请求排队等待可用线程,请考虑增加 NSD
使用的进程数。
java
./CSPnsd --c=[no_processes]
- 其中
no_processes
是要启动的子(或工作)进程的数量。
应该注意的是,将子进程的数量设置为 1
最好。
java
./CSPnsd --c=1
在这种情况下,NSD
实际上启动了两个进程:一个父进程和一个子工作进程。使用"-c
"指令时父进程的存在提高了 NSD
的弹性,因为如果其中一个工作进程出现故障,父进程可以替换该进程。对于单、多线程架构,NSD
并不总是能够从严重的内部错误情况中恢复。
在工作进程数量超过 1
的情况下,不应使用状态感知连接(保留模式 1
)。
授予 NSD
管理员权限
NSD (CSPnsd)
组件的管理员可以对允许启动/停止此服务的用户(或组)进行一些控制。
在默认情况下,将创建 CSPnsd
主进程 ID (PID)
文件 (CSPnsd
),以便只有启动该服务的用户才能随后将其关闭。
例如,管理员现在可以选择允许属于当前 UNIX®
组的所有用户管理该服务。这是管理用户所属的组。
java
NSD start-up option: [-m=s]
Define the user(s) permitted to manage this service
where 's' is:
'u' for the current user (the default),
'g' for the current group,
'o' for others,
'a' for everyone (m=ugo),
java
./CSPnsd -m=ug
这允许当前用户和当前用户组中的所有其他人管理 NSD
。
当发出停止 NSD
的命令时,它首先尝试向 CSPnsd
父进程发出信号,像以前一样关闭。如果由于服务已由其他用户启动而无法实现,则会将一个标志写入 CSPnsd.ini
文件,并且服务在确认此标志后会正常关闭自身。此过程最多需要 20
秒才能完成。