欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 经历了前面两篇的入门和编译源码之后,从本篇起,咱们用理论结合实战的方式进入系统的nginx-clojure学习之旅
  • 作为《Java扩展Nginx》系列的第三篇,本文会与大家一起了解nginx-clojure基本的配置项,通过它们来掌控和优化自己的应用,以下是本篇的主要内容:
  1. java进程数量
  2. 配置项:jvm_path
  3. 配置项:jvm_classpath
  4. 配置项:jvm_var
  5. 配置项:jvm_options
  6. 配置项:jvm_handler_type

java进程数量

  • 当nginx运行起来后,究竟有多少个java进程?这个应该是最需要弄清楚的问题,举个简单例子,当你的java代码在处理请求的时候,如果把一些信息放在内存中,想留给下一次请求使用,此时可能会让你失望了,因为处理下一个请求的进程可能是另一个
  • 熟悉nginx的读者对配置项worker_processes应该不陌生,这是工作进程数的配置,而nginx-clojure的java进程数量就等于worker_processes的值
  • 接下来实际验证一下,看看当前环境的nginx配置,如下图,worker_processes等于1:

  • 此时执行jps命令,如下图,只有一个进程3183:

  • 现在将worker_processes改为10,执行nginx -s reload重新加载配置,然后用jps查看,如下图,此时已经有了10个java进程:

  • 接下来是nginx.conf中与java有关的配置项,掌握了它们,我们才能将系统调整到最优状态

配置项:jvm_path

  • jvm_path是个http配置项,一般情况下,咱们可以设置为auto,如果您的环境有多个jvm,也可以指定其中的一个,具体设置方法如下(是参考设置,您要根据自己环境的情况调整),
  1. windows:C:/Program Files/Java/jdk1.7.0_25/jre/bin/server/jvm.dll
  2. macosx:/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/jre/lib/server/libjvm.dylib
  3. ubuntu:/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so
  4. centos:/usr/java/jdk1.6.0_45/jre/lib/amd64/server/libjvm.so

配置项:jvm_classpath

  • jvm_classpath是个http配置项,指定了java进程的classpath,咱们来看看nginx-clojure官方安装包的内部结构,如下图红框,有libs和jars两个目录,里面都有jar文件:

  • 再看nginx-clojure官方安装包中的配置文件,如下图红框,与前面的两个文件夹对应,也就是说这两个文件夹内的所有jar都能被java进程加载:

配置项:jvm_var

  • jvm_var是个http配置项,用来在配置中定义一个变量,可以个其他变量使用
  • 假设我的jvm_classpath值原本是"/usr/local/nginx/libs/*:/usr/local/nginx/jars/",可以用jvm_var做改造,将成下面这样,而jvm_classpath的真实值保持不变:
jvm_var nginxHome '/usr/local/nginx';
jvm_classpath "#{nginxHome}/libs/*:#{nginxHome}/jars/*";
  • 咱们在写脚本和配置的时候经常会用到变量,jvm_var正好派上用场

配置项:jvm_options

  • jvm_optionsoptions是个http配置项,options参数是启动jvm最常用的参数了,这里的jvm_options承担的也是这个角色,不用多说,来看几个实际配置,聪明的您肯定秒懂:
# 启动堆内存
jvm_options -Xms250m; # 最大堆内存
jvm_options -Xmx1024m; # 线程栈大小
jvm_options -Xss128k; # 系统变量,代码中可以获取改变量的值
jvm_options -Djava.awt.headless=true;

配置项:jvm_handler_type

  • jvm_handler_type是个http配置项,至于它的作用,咱们先来看一个location配置,如下图红框,需要有一个content_handler_type配置项指定类型:

  • 如果有多个location,而且都是java类型,岂不是每个location中都要写一个content_handler_type了?这时候,可以在http配置中增加jvm_handler_type配置项,指定location中的默认content_handler_type值,这样location中的content_handler_type就可以不写了,如下图:

  • 以上就是本文要介绍的所有配置项了,虽然还剩下很多配置项未提到,例如jvm_init_handler_name、jvm_init_handler_code等,但是这些都是handle相关的配置项,而各种丰富的handler正是nginx-clojure的重要知识点,所以,这些配置会留待后面的文章中,与handler一同讲解。

欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

Java扩展Nginx之三:基础配置项的更多相关文章

  1. Nginx——1.基础知识

    Nginx——1.基础知识 作为高速.轻量.高性能等优点集于一身的服务器,Nginx在近些年迅速发展并不断扩大市场份额,甚至在最近其市场份额一举超过微软的IIS,跃身到第二位,仅次于Apache. 但 ...

  2. Java 教程整理:基础、项目全都有

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...

  3. Java回顾之Spring基础

    第一篇:Java回顾之I/O 第二篇:Java回顾之网络通信 第三篇:Java回顾之多线程 第四篇:Java回顾之多线程同步 第五篇:Java回顾之集合 第六篇:Java回顾之序列化 第七篇:Java ...

  4. nginx的基础应用

    nginx的基础应用 一.简介 今天我们将介绍一些nginx的简单应用,启动.停止nginx,重载nginx的配置,nginx配置文件的格式,如何配置nginx服务静态资源,如何配置nginx作为反向 ...

  5. Java面试题之基础篇概览

    Java面试题之基础篇概览 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,且public的类名必须与文件名相一致. 2.Ja ...

  6. spring扩展点之三:Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法,在spring启动后做些事情

    <spring扩展点之三:Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法,在spring启动后做些事情> <服务网关zu ...

  7. Java并发编程之三:volatile关键字解析 转载

    目录: <Java并发编程之三:volatile关键字解析 转载> <Synchronized之一:基本使用>   volatile这个关键字可能很多朋友都听说过,或许也都用过 ...

  8. nginx实现基础web

    目录 nginx实现基础web 什么是lnmp lnmp架构如何工作 Nginx与Fast-CGO详细工作流程 LNMP环境准备 一,部署LNMP 1.使用nginx官方源 2.创建nginx用户 3 ...

  9. Nginx web基础入门

    目录 Nginx web基础入门 如何升级nginx或者添加功能 使用systemd管理nginx nginx相关配置文件 nginx的配置文件详解 日志格式 game日志记录实战 日志切割 手写虚拟 ...

  10. Nginx 常用基础模块

    目录 Nginx 常用基础模块 Nginx日志管理 nginx日志切割 Nginx目录索引 Nginx状态监控 Nginx访问控制 Nginx访问限制 Nginx 请求限制配置实战 Nginx Loc ...

随机推荐

  1. Java设计模式 —— 外观模式

    13 外观模式 13.1 外观模式概述 Facade Pattern: 为子系统的接口提供一组统一的入口.外观模式定义了一个高层接口,这个接口使得子系统的更加容易使用. 在外观模式中,一个子系统的外部 ...

  2. Go/Python gRPC实践

    gRPC框架 & ProtoBuf 安装相关工具: pip3 install grpcio pip3 install grpcio-tools protobuf3有自己专门的定义的格式,基于此 ...

  3. ROS2的安装与使用(超详细图文教程)

    ROS2的安装与使用(超详细图文教程) 如果前面的虚拟机以及Ubuntu22.04镜像都安装好了,根据目录直接跳到ROS2的安装. 资料参考于:古月居 VMware虚拟机的安装 安装地址: 对于不了解 ...

  4. 深度学习--实战 LeNet5

    深度学习--实战 LeNet5 数据集 数据集选用CIFAR-10的数据集,Cifar-10 是由 Hinton 的学生 Alex Krizhevsky.Ilya Sutskever 收集的一个用于普 ...

  5. Centos 安装 python3.x 为默认

    CentOS 7 中默认安装了 Python,但是版本是2.x的,由于2020年python2.x将停止更新,因此需要将版本升级至3.x.但由于python2.x是系统集成的,很多命令都是要基于pyt ...

  6. Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized. 问题解决方法

    先说结论,这是由于itext和asian版本不一致造成的. 如果你的需求仅仅是生成pdf,则使用解决办法1,如果需求有导出word则使用解决办法2 解决办法1: 将pom文件的com.lowagie ...

  7. error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file o

    error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file o ...

  8. KMP字符串匹配问题

    KMP算法 本文参考资料:https://www.zhihu.com/question/21923021 KMP算法是一种字符串匹配算法,可以在 \(O(n+m)\) 的时间复杂度内实现两个字符串的匹 ...

  9. #Powerquery pq从入门到精通,笔记梳理

    详细视频可以B站搜索,ms_excel博主,看leila的视频翻译课,powerquery从入门到精通. 后续也会根据自己工作来更新这部分的实际用法.

  10. Vue使用:style动态给css中某样式赋值

    template中 <span class="successOrError" :style="{'--fontColor':"green"}&q ...