您现于de位置乃:亚博 > APP学习

亚博 2020-03-04 APP学习 80

APP TS和NTS版本选择

于APP 开发和生产环境搭建过程中 需要安装APP语言解析器.

官方提供了2种类型de版本 线程安全(TS)版和非线程安全(NTS)版 有时后我们开发环境和实际生产de环境有所不同 因此也需要选择安装对应deAPP版本.

1 简介

TS:

TS(Thread-Safety)即线程安全 多线程访问时 采用了加锁机制 当1个线程访问该类de某个数据时进行数据加锁保护 其他线程不能同时进行访问该数据 直到该线程读取完毕 其他线程才可访问使用该数据 好处乃不会出现数据不1致或者数据污染de情况 但耗费de时间要比 NTS 长.

APP以 ISAPI 方式(Apache 常用方式)加载de时候选择TS版本.

NTS:

NTS(None-Thread Safe)即非线程安全 不提供数据访问保护 有可能出现多个线程先后或同时操作同1数据de情况 容易造成数据错乱(即脏数据) 1般操作de执行时间要比 TS 短.

APP以FAST-CGI方式加载运行de时候选择TNS版 具有更好de性能;

ISAPI:

ISAPI(Internet Server Application Programming Interface), 通常乃指被http服务器所加载 以服务器de模块形式运行 由微 软提出 故只能于win平台上运行 如win下deapache,iis[用fast cgi 方式工作更稳定] 而linux上app 则以 Apache模块(常用方式)或者app-fpm(该方式更适合于NGINX+APP 运行)de方式运行.

CGI:

cgi(Common Gateway Interface):HTTP服务器与客户端机器上de程序进行"交谈"de1种工具,简而言之 cig就乃1种 后台语言 可以与服务器进行通讯.此时deapp乃作为1个独立de程序运行de 特点就乃耗费内存.

FAST CGI:

fast cgi乃1个常驻(long-live)型deCGI 它可以1直执行着 只要激活后 不会每次都要花费时间去fork1个新进程.这种方式 乃与语言无关de 可伸缩架构deCGI开放扩展 其主要行为乃将CGI解释器进程保持于内存中并因此获得较 高de性能.

FAST-CGI 乃微软为了解决 CGI 解释器de不足而提出改进方案.当1个请求向 web server 发送请求时 web server总会fork1个CGI解释器进程进行处理这个请求 进程处理完成之后将结果返回给web server web server将结果返回并显示出来 进程结束 当用户再次请求同1个页面时 web server又会fork1个新进程进行请求处理 这样效率会比较低下(CGI被人诟病de主要原因).而采用FAST-CGI 解释器de 话 当1个请求执行完毕后不会注销该进程 而乃将改进程进入休眠期 当接收到新de请求时 重新启用改进程进行处理.FAST-CGI 较CGI 减少了进程de重复创建de资源占用.

进程与线程:1个进程至少存于1个或多个线程.

2 选择

通常win下 APP + Apache 组合 以 ISAPI de方式运行.

而linux下通常分为2种:

Apache + APP APP1般作为Apache de模块进行运行;

Nginx + APP 以 appfast cgide方式 即app-fpmde方式运行 该方式对高并发 高负载有良好de性能体现 因此很多网站采用该方式进行环境de搭建.

Nginx 较Apache de配置要少很多 因此人为出错de概率要少1点 但也因此 Apache de 稳定性要比Nginx 高.


总结:

以 ISAPI 方式运行就用 TS 线程安全版

以 FAST-CGI 或 APP-FPM 方式运行就用NTS 非线程安全版

通常 Windows:Apache+APPTS IIS(fast-cgi)+APPTNS

通常Linux:Apache+APPTS Nginx+APPTNS


评论