首页 > 系统相关 >Java扩展Nginx之三:基础配置项

Java扩展Nginx之三:基础配置项

时间:2023-07-11 19:35:06浏览次数:35  
标签:Java nginx 之三 配置 Nginx handler jvm java options

欢迎访问我的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官方安装包的内部结构,如下图红框,有libsjars两个目录,里面都有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,之三,配置,Nginx,handler,jvm,java,options
From: https://www.cnblogs.com/bolingcavalry/p/17537138.html

相关文章

  • JAVA基础0711
    方法方法重载在同一个类中,方法名相同,参数列表不同。与返回值无关。参数列表不同:参数的个数不同。参数的对应的数据类型不同。方法的调用:执行方法中的代码方法名(参数列表);有返回值类型的方法:1.普通调用方法名(参数列表);2.赋值调用数据类型变量名=方法名......
  • Nginx代理Mysql
    10.2.24.161部署nginx,代理10.2.24.191:3306数据库1.安装stream模块nginx默认不会编译stream模块的,需要在编译的时候,指定--with-stream./configure--prefix=xxx--add-module=xxxx--add-module=xxx--with-stream我在10.2.24.161执行:./configure--prefix=/opt/local/nginx......
  • Java语言初识
    Java语言入门Java的特性和优势简单性:就是c++语法的纯净版。没有头文件,指针运算,结构,联合,操作符重载,虚基类等等。由于语法基于c,因此学习起来完全不费力。面向对象:面向对象是一种程序设计技术,他将重点放在数据(即对象)和对象之间的接口上。模拟人的思维写程序,万物皆对象!可移植......
  • 七月十一号Java学习
       ......
  • java基础
    java注:本笔记是对以前学习内容的总结,因此,很容易出现一些多线程,JVM,框架,@Component注解等。如果你无法理解,可以前往元动力官网,这个网站的两位老师很厉害,本文就是基于他们的笔记来写的。序章计算机基础知识二进制的存储计算机中,所有数据都是以二进制来进行存储的,在这些之中1b......
  • 第二节 Java基础概念
    题目1:(选择)下列关于java变量声明那个是错误的:A.intx=5;B.doubled=3.14;C.chargrade=‘C’;D.Stringname=‘黑马程序员’;讲解:D字符串需要用双引号引起来题目2:(看代码说结果)看代码说结果,不要去运行。doublemoney=10.0;money=money+5;money-=2.......
  • ZeroMQ: Java 请求/响应和发布/订阅模式的简单实现
    转载于:https://blog.csdn.net/weixin_47951400/article/details/119142454 文章目录POM一、请求响应模式(ZMQ_REQ+ZMQ_REP)1.REP2.REQ3.测试REPREQ测试结果二、发布/订阅模式(ZMQ_PUB+ZMQ_SUB)1.PUB2.SUB3.测试PUBSUB测试结果 POM ......
  • java连接mqtt总是自动断开的问题排查及解决
    问题描述最近在做一个视频监控平台,要同步下级平台的摄像头信息数据,是通过其他同事写的c++服务往mqtt里推数据,我这边通过java连接mqtt监听主题获取摄像头信息。刚开始写完都还好,但是测试过一段时间,发现javaclient连接总是会自动断开,并且还会有丢失消息的情况。一开始怀疑是网络......
  • java Fegin x-www-form-urlencoded 类型请求
    spring发送content-type=application/x-www-form-urlencoded和普通请求不太一样。@FeignClient(name="ocr-api",url="${orc.idcard-url}",fallbackFactory=OcrClientFallbackFactory.class)publicinterfaceOcrClient{@PostMappi......
  • finshell 连接不到服务器,报Session.connect: java.net.SocketException: Connection r
    用finshell一段时间了,非常不错,但是有段时间突然连接不上服务器,各种重装,重启服务器都不行,在网上搜方法也没有好的办法。在我一次实在烦的不得了的时候,让我发现一个好的解决方案。先上图: 是不是出现这个问题,那么我的解决方案是啥呢?看我的手速,就是点击红色的闪电图标,一般连续点击......