Classifique com cuidado os tópicos e respostas mais abrangentes da entrevista do Tomcat em toda a rede. Isso é o suficiente para ler esta entrevista do Tomcat!

1. Qual é a porta padrão do Tomcat e como modificá-la?

1) Encontre a pasta conf no diretório Tomcat
2) Entre na pasta conf e encontre o arquivo server.xml
3) Abra o arquivo server.xml
4) Encontre as seguintes informações no arquivo server.xml

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/>

port = "8080" para a porta que você deseja

2. Que tipo de modos de operação de conector (otimização) o tomcat tem?

bio: Operações de I / O Java tradicionais, IO síncronas e de bloqueio. maxThreads = ”150” // Tomcat usa threads para processar cada solicitação recebida. Este valor representa o número máximo de threads que o Tomcat pode criar. O valor padrão é 200. Pode ser ajustado de acordo com o desempenho do período e o tamanho da memória da máquina, geralmente 400-500. O máximo pode ser cerca de 800. minSpareThreads = ”25” —O número de threads criados quando o Tomcat é inicializado. O valor padrão é 4. Se atualmente não houver encadeamentos inativos e maxThreads não for excedido, o número de encadeamentos inativos criados de uma vez. O número de encadeamentos criados quando o Tomcat é inicializado também é definido por este valor. maxSpareThreads = ”75” -Uma vez que os encadeamentos criados excederem este valor, o Tomcat desligará os encadeamentos de soquete que não são mais necessários. O valor padrão é 50. Assim que o número de threads criados exceder esse valor, o Tomcat desligará os threads que não são mais necessários. O número de threads pode ser calculado aproximadamente "pelo número médio de usuários operando ao mesmo tempo por segundo e o tempo médio de operação do sistema". acceptCount = ”100” —Especifique o número de solicitações que podem ser colocadas na fila de processamento quando todos os threads disponíveis para solicitações de processamento forem usados. Solicitações que excedam esse número não serão processadas. O valor padrão é 10. Se o número de threads atualmente disponíveis for 0, a solicitação será colocada na fila de processamento. Este valor limita o tamanho da fila de solicitações. As solicitações que excedem esse valor não serão processadas. connectionTimeout = ”20000” -A conexão de rede expirou, o valor padrão é 20000, unidade: milissegundos. Definir como 0 significa nunca tempo limite, portanto, definir tem perigos ocultos. Normalmente, pode ser definido para 30000 milissegundos.

nio: JDK1.4 começou a suportar IO de bloqueio síncrono ou não-bloqueio síncrono. Especifique o modelo NIO para aceitar solicitações HTTP protocol = ”org.apache.coyote.http11.Http11NioProtocol” Especifique o modelo NIO para aceitar solicitações HTTP. O padrão é BlockingIO, e a configuração é protocol = ”HTTP / 1.1” acceptorThreadCount = ”2” O número de threads de recebimento ao usar o modelo NIO aio (nio.2): JDK7 começa a suportar E / S não bloqueadora assíncrona.

apr: Tomcat chamará a biblioteca de vínculo dinâmico central do servidor Apache HTTP na forma de JNI para processar a leitura de arquivos ou operações de transmissão de rede, melhorando significativamente o desempenho de processamento do Tomcat para arquivos estáticos.

<!--
 <Connector connectionTimeout="20000" port="8000"
protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/>
 -->
 <!-- protocol 启用 nio 模式,(tomcat8 默认使用的是 nio)(apr 模式利用系统级异步 io) -->
 <!-- minProcessors 最小空闲连接线程数-->
 <!-- maxProcessors 最大连接线程数-->
 <!-- acceptCount 允许的最大连接数,应大于等于 maxProcessors-->
 <!-- enableLookups 如果为 true,requst.getRemoteHost 会执行 DNS 查找,反向解析 ip 对应域名或主机名-->
 <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443 maxThreads=“500” minSpareThreads=“100” maxSpareThreads=“200” acceptCount="200" enableLookups="false"/>

Outras configurações maxHttpHeaderSize = “8192” A extensão máxima das informações do cabeçalho da solicitação http, a parte que excede esse comprimento não será processada. Geralmente 8K. URIEncoding = "UTF-8" especifica o formato de codificação de URL do contêiner Tomcat. disableUploadTimeout = “true” Se deve usar o mecanismo de tempo limite ao enviar. enableLookups = “false” - Se deve reverter a verificação do nome de domínio, o valor padrão é true. Para melhorar a capacidade de processamento, deve ser definido como false compression = "on" Ative a função de compactação compressionMinSize = "10240" Habilite o tamanho do conteúdo de saída compactado, o padrão é 2KB noCompressionUserAgents = "gozilla, traviata" Para o seguinte navegadores, não habilite a compressão compressableMimeType = "Text / html, text / xml, text / javascript, text / css, text / plain"

3. Quantos métodos de implantação o Tomcat possui?

1) Coloque o projeto da Web diretamente em webapps, e o Tomcat o implantará automaticamente.
2) Configure o nó no arquivo server.xml e defina os atributos relevantes.
3) Configure através do Catalina: insira o arquivo conf \ Catalina \ localhost Em seguida, crie um arquivo xml cujo nome é o nome do site. A maneira de escrever XML para definir.

4. Como o contêiner tomcat cria uma instância da classe servlet? Qual princípio foi usado?

Quando o contêiner é iniciado, ele lê o arquivo web.xml em todos os aplicativos da web no diretório webapps, analisa o arquivo xml e lê as informações de registro do servlet. Em seguida, carregue a classe de servlet registrada em cada aplicativo e instancie-a por meio de reflexão. (Às vezes também é instanciado na primeira solicitação) No registro do servlet, se for um número positivo, será instanciado no início.Se não for escrito ou for um número negativo, será instanciado pela primeira vez.

5. Ajuste de memória

A configuração do modo de memória está em catalina.sh, basta ajustar a variável JAVA_OPTS, pois os parâmetros de inicialização subsequentes tratarão JAVA_OPTS como os parâmetros de inicialização da JVM. As configurações específicas são as seguintes:

JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -
XX:NewRatio=4 -XX:SurvivorRatio=4"

Os parâmetros são os seguintes: -Xmx3550m: Defina a memória máxima disponível da JVM para 3550M.

-Xms3550m: Configure o JVM para fazer com que a memória seja de 3550m. Este valor pode ser definido como -Xmx para evitar a realocação de memória da JVM após a conclusão de cada coleta de lixo.

-Xmn2g: Defina o tamanho da geração jovem para 2G. O tamanho do heap inteiro = tamanho da geração jovem + tamanho da geração antiga + tamanho da geração persistente. A geração permanente geralmente tem um tamanho fixo de 64m, portanto, após aumentar a geração jovem, o tamanho da geração anterior será reduzido. Este valor tem um grande impacto no desempenho do sistema. A Sun recomenda oficialmente uma configuração de 3/8 de todo o heap.

-Xss128k: Defina o tamanho da pilha de cada thread. Após JDK5.0, o tamanho da pilha de cada thread é 1M e o tamanho da pilha de cada thread é 256K antes. Ajuste o tamanho da memória exigido pelo thread do aplicativo. Na mesma memória física, a redução desse valor pode gerar mais threads. No entanto, o sistema operacional ainda tem um limite no número de threads em um processo, que não pode ser gerado indefinidamente. O valor da experiência é em torno de 3000 ~ 5000.

-XX: NewRatio = 4: Defina a proporção da geração jovem (incluindo o Éden e duas áreas de Sobreviventes) para a geração anterior (excluindo a geração permanente). Definido como 4, a proporção da geração mais jovem para a velha é de 1: 4, e a geração mais jovem é responsável por 1/5 de toda a pilha

-XX: SurvivorRatio = 4: Defina a proporção do tamanho da área do Éden para a área do Sobrevivente na geração jovem. Definido como 4, a proporção de duas áreas de sobreviventes para uma área do Éden é 2: 4, e uma área de sobreviventes ocupa 1/6 de toda a geração jovem -XX: MaxPermSize = 16m: Defina o tamanho da geração persistente para 16m.

-XX: MaxTenuringThreshold = 0: Defina a idade máxima do lixo. Se for definido como 0, o objeto de geração jovem entrará na geração anterior diretamente, sem passar pela área de sobrevivente. Para aplicações com gerações mais antigas, a eficiência pode ser melhorada. Se esse valor for definido com um valor maior, o objeto da geração jovem será copiado várias vezes na área Sobrevivente, o que pode aumentar o tempo de sobrevivência do objeto na geração jovem e aumentar a teoria geral de reciclagem na geração jovem.

6. Processamento de sessão compartilhada

Os métodos de processamento atuais são os seguintes:
1) Use a função de replicação de sessão do próprio Tomcat para consultar http://ajita.iteye.com/blog/1715312 (Configuração de replicação de sessão). A solução é que a configuração é simples, mas o a desvantagem é que é um cluster Quando o número é grande, o tempo de cópia da sessão será maior, o que afeta a eficiência da resposta

2). Use um terceiro para armazenar sessões compartilhadas. No momento, memcached é usado para gerenciar sessões compartilhadas. Com a ajuda do memcached-sesson-manager, o gerenciamento de sessão do Tomcat se refere a http://ajita.iteye.com/blog/ 1716320 (Use MSM para gerenciar sessão de cluster Tomcat)

3). Em situações em que a estratégia de sessão persistente não é muito exigente para a sessão (nenhum faturamento está envolvido, nova solicitação é permitida se falhar, etc.), a mesma sessão do usuário pode ser processada pelo nginx ou apache para o mesmo Tomcat, esta é a chamada estratégia de sticky de sessão, e há mais referências para os aplicativos atuais: http://ajita.iteye.com/blog/1848665 (tomcat session sticky) nginx não inclui módulos de sessão sticky por padrão, e precisa ser recompilado. A vantagem é lidar com isso. A eficiência é muito maior, a desvantagem é que não é adequado para ocasiões com forte necessidade de conversação

7. Adicionar monitoramento remoto JMS

Para Tomcat implantado em outras máquinas na LAN, você pode abrir a porta de monitoramento JMX, e outras máquinas na LAN podem visualizar alguns parâmetros comumente usados ​​por meio desta porta (mas algumas funções mais complexas não são suportadas), que também é configurado no Parâmetros de inicialização JVM. Sim, a configuração é a seguinte: -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = false -Djava.rmi.server.hostname = 192.168.71.38 Defina o Endereço IP do monitoramento da JVM da JVM. O objetivo principal é evitar o monitoramento errôneo do endereço da intranet de 127.0.0.1 -Dcom.sun.management.jmxremote.port = 1090 Definir a porta de monitoramento da JVM por JMS -Dcom. sun.management.jmxremote.ssl = false Definir o monitoramento JVM JMS não é prático SSL -Dcom.sun.management.jmxremote.authenticate = false Definir monitoramento JVM sem autenticação

8. Existem ferramentas de análise profissional

IBM ISA, JProfiler, probe, etc., basta acessar a Internet para pesquisar métodos específicos de monitoramento e análise

9. Sobre o número de sessões do Tomcat

Isso pode ser visto diretamente da interface de gerenciamento da web do Tomcat ou com a ajuda de uma ferramenta de terceiros, Lambda Probe, que tem um pouco mais funções do que o próprio gerenciamento do Tomcat, mas não muito;

10. Modo de trabalho do Tomcat?

Tomcat é um contêiner JSP / Servlet. Como um contêiner de servlet, ele tem três modos de trabalho: contêiner de servlet independente, contêiner de servlet em processo e contêiner de servlet fora de processo.
As solicitações para entrar no Tomcat podem ser divididas nas duas categorias a seguir, de acordo com o modo de trabalho do Tomcat: Tomcat como um servidor de aplicativos: A solicitação vem do servidor web front-end, que pode ser Apache, IIS, Nginx, etc .; Tomcat como um servidor independente: a solicitação vem do dispositivo de navegação na web

Benefícios do leitor

Obrigado por ver aqui!
Compilei muitas das últimas perguntas da entrevista sobre Java para 2.021 (incluindo respostas) e notas de estudo sobre Java aqui, conforme mostrado abaixo
Insira a descrição da imagem aqui

As respostas às perguntas da entrevista acima são organizadas em notas de documento. Bem como entrevistas também compilou algumas informações sobre alguns dos fabricantes e entrevista Zhenti última coleção 2021 (ambos documentando uma pequena parte da captura de tela) grátis para que todos possam compartilhar, se necessário, pode clicar para inserir o sinal: CSDN! Grátis para compartilhar ~

Se você gostou deste artigo, por favor, encaminhe-o e goste.

Lembre-se de me seguir!Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_49527334/article/details/112781048
Recomendado
Clasificación