Otimizando Servidores Web De Alta Demanda Dissertação De Mestrado

Otimizando Servidores Web De Alta Demanda Dissertação De Mestrado

Otimizando Servidores Web de Alta Demanda Renato Hirata Dissertação de Mestrado 1 N! p AI Instituto de Computação Universidade Estadual de Campinas Otimizando Servidores Web de Alta Demanda Renato Hirata Abril de 2002 Banca Examinadora: • Prof. Dr. Paulo Lício de Geus (Orientador) Instituto de Computação, UNICAMP • Prof. Dr. Adriano Mauro Cansian IBILCE, UNESP • Prof. Dr. Rogério Drummond Instituto de Computação, UNICAMP • Prof. Dr. Célio Cardoso Guimarães (Suplente) Instituto de Computação, UNICAMP Ia CM00171050-6 Ficha Catalográfica elaborada pela Biblioteca do IMECC da UNICAMP Hirata, Renato H613o Otimizando Servidores Web de alta demanda I Renato Hirata. -Campinas, SP: [s.n.l, 2002. Orientador: Paulo Lício de Geus. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação. 1. Redes de computação - Administração. 2. Desempenho 3. Internet (Redes de computadores). 4. Redes de computação - Protocolos. 5. UNIX (Sistema operacional de computador) - Otimização. 6. TCP/IP (Protocolos de redes de computação) 7. World Wide Web (Sistema de Recuperação de Informação). I. Geus, Paulo Lício de. li. Universidade Estadual de Campinas. Instituto de Computação. Ill. Título 11 TERMO DE APROVAÇÃO Tese defendida e aprovada em 11 de abril de 2002, pela Banca Examinadora composta pelos Professores Doutores: Prof. Dr. Adriano Mauro Cansian IBILCE - Unesp Prof. Dr. Rogério Drum IC- UNICAMP Prof. Dr. Paulo Lício deGeUS IC- UNICAMP 111 Otimizando Servidores Web de Alta Demanda Este exemplar corresponde à redação final da Dis­ sertação devidamente corrigida e defendida por Renato Hirata e aprovada pela Banca Examinadora. Campinas, 11 de Abril de 2002 d 7- Paulo Ucio de Geus (Orientador) Dissertação apresentada ao Instituto de Com­ putação, UNIC&I\I!P, como requisito parcial para a obtenção do título de Mestre em Ciência da Com­ putação. IV © Renato Hirata, 2002. Todos os direitos reservados. v Resumo Com o explosivo crescimento da Web, sua popularização e sua grande importãncia como meio de comunicação global, cada vez mais a atenção se volta para questões de desempenho. Pelo fato de ser um serviço relativamente recente, são poucos os estudos que abordam de modo geral todos os fatores que influenciam no seu desempenho e como tais fatores estão inter-relaciona­ dos. Assim, o objetivo deste trabalho é abordar o problema de desempenho na Web como um todo, levantando e analisando todos os componentes relacionados, fornecendo embasamento teórico para o entendimento desses tópicos e apresentando suas possíveis soluções, de forma a cobrir esta lacuna na bibliografia existente. Em especial, se concentra em tópicos de software na porção servidora de sistemas de grande demanda. Como resultado, o leitor encontrará um texto único na otimização servidores de grande porte, que é um trabalho de referência e ao mesmo tempo um guia de otimização1 L Este trabalho foi desenvolvido junto à Comissão de Vestibulares da Universidade Estadual de Campinas e seus resultados utilizados para a implementação do site de alta demanda desta instituição. vi Abstract With the Web explosive growth, its popularization and its great importance as a way of global communication , more and more attention is devoted to its performance issues. Due to the Web being a relatively new service, very few works approach the issue of performance affecting fac­ tors in a broad sense, as well as their inter-relationship. The goal of this work is to fill that gap by enumerating and analysing every component that affects Web performance. This is done by covering theoretical issues for a clear understanding of ali topics involved and by presenting pos­ sible solutions and suggestions. The main focus of this work is on the server portion of high per­ formance systems. As a result, the reader will find a unique text on optimizing performance of very large Web sites, that is both a reference work and a tuning guide1 1. This work was developed with the support of the "Vestibular" Comission of the State University of Campinas, and its results were used to implement the high demanding site of this institution. vii Dedico aos meus pais, e minha avó em memória, as pessoas que mais me ajudaram em todos os sentidos, fornecendo algo mais importante que o conhecimento técnico, mas o conhecimento da vida, representado em atos concretos de amor, humildade, caráter e respeito ao próximo. viii Agradecimentos Ao professor Paulo Lício de Geus, por toda orientação para o desenvolvimento deste trabalho. À minha avó, Joana, que não pôde estar presente "fisicamente" agora, mas sempre esteve e estará em memória e espírito. Aos meus pais, Francisco e Hideko, por tudo. Aos parentes próximos, em especial minhas tias, Luzia, Rogéria, Ana e Cida, e meu tio Gabriel, por todo o apoio em minha estadia em Campinas. Aos meus irmãos, José Carlos, Margarete, Flávio e Caio, distantes, mas presentes. À Liliane, pelo apoio e compreensão. Ao pequeno Sávio, pela inspiração. Aos meus amigos, que sempre me apoiaram e acreditaram na realização deste trabalho. À Comissão Permanente para os Vestibulares da Unicamp, por todo suporte e amizade. Ao Centro de Computação da Unicamp, em especial ao Fábio Mengue, pelo apoio. A Deus, pela oportunidade de realização de mais este importante passo em minha vida. ix Conteúdo 1 Introdução e Motivações 21 2 O Sistema Operacional 25 2.1 O Unix ........................................................ 26 2.1.1 Histórico ................................................. 26 2.1.2 Sabores de Unix ............................................ 27 2.1.2.1 Linux ............................................. 28 2.1.2.2 BSD .............................................. 28 2.1.2.3 Solaris ............................................. 28 2.1.2.4 Digital Unix ......................................... 29 2.1.2.5 Irix ............................................... 29 2.1.2.6 Mach OS ........................................... 29 2.1.2.7 HP-UX ............................................ 29 2.1.3 O UNIX como servidor TCP/IP ................................. 29 2.2 O Linux ....................................................... 30 2.2.1 Características Gerais ........................................ 30 2.2.2 Controle de versões do Linux .................................. 31 2.2.3 Por que o Linux? . 31 2.3 O Kemel ....................................................... 32 2.3.1 Definição ................................................. 32 2.3.2 Modos de execução e as System Calls ............................ 32 2.3.3 Arquitetura de kemels ........................................ 33 2.4 Otimizando o kemel do Linux . 34 2.4.1 Compilação otímizada ........................................ 35 2.4.1.1 Configurando o novo kemel ............................ 35 2.4.1.2 A Compilação ....................................... 38 2.4.1.3 Configurando o LILO .................................. 38 2.4.2 Configurando parâmetros do kernel .............................. 41 2.4.2.1 Estrutura do /proc .................................... 41 2.4.2.2 Alterando parâmetros: /proc/sys .......................... 45 2.4.2.3 Estrutura do /proc/sys ................................ 46 2.5 Processos e Threads . 46 2.5.1 Conceitos ................................................. 47 2.5.1.1 Escalonamento ................................. 47 2.5.1.2 Preemptividade ................................. 47 2.5.1.3 Criação de Processos .................................. 47 xi 2.5.2 Threads .................................................. 48 2.5.2.1 Definição . ........ 48 2.5.2.2 Forma de implementação do pacote de threads .............. 49 2.5.2.3 Suporte a threads no Linux ............................. 50 2.5.2.4 Implementação do kernel via threads ...................... 51 2.5.3 Otimizações possíveis . .................... 52 2.6 Sistema de Arquivos . 53 2.6.1 Implementação de Sistema de Arquivos ........................... 54 2.6.1.1 Bloco ............................................. 54 2.6.1.2 Superbloco ......................................... 56 2.6.1.3 Inode ............................................. 56 2.6.1.4 Diretórios .......................................... 57 2.6.1.5 Descritor de Arquivo . ........................ 59 2.6.2 Manutenção de Sistema de Arquivos ............................. 60 2.6.2.1 Desfragmentação de Discos ......................... 60 2.6.2.2 Particionamento Adequado . 61 2.6.2.3 Evitando o registro de último acesso de leitura ............... 62 2.6.2.4 Evitar o uso de links simbólicos .......................... 63 2.6.2.5 Otimizar as variáveis de PATH ........................... 63 2.6.2.6 Evitar "-user" . 64 2.6.3 Cache de Disco ............................................. 64 2.6.3.1 Tamanho do Buffer ................................... 64 2.6.3.2 Atualização em Disco ................................. 65 2.6.3.3 Flushing de buffers no Linux (kernel 2.4) ................... 66 2.6.3.4 Evitando o cache: Raw Devices .......................... 68 2.6.4 Otimizando acesso a discos IDE no Linux via hdparm ................ 68 2.6.4.1 Exibindo configuraçoes e desempenho atuais ................ 69 2.6.4.2 Habilitando o DMA ................................... 70 2.6.4.3 Habilitando transferências de 32 bits ...................... 70 2.6.4.4 Habilitando a transferência de múltiplos setores por interrupção .. 71 2.7 Gerenciamento de memória ......................................... 71 2.7.1 Funções do Gerenciador de memória ............................ 71 2.7.2 Como a memória é utilizada ..................................

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    198 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us