The document discusses the new features of Apache HTTP Server version 2.4, including performance improvements through more efficient modules and data structures, enhanced configuration options, new modules for capabilities like Lua scripting and remote IP access, and improved proxy functionality for dynamic and cloud environments. Key areas covered are performance, configuration, new modules, and proxy features.
"Swoole: double troubles in c", Alexandr VronskiyFwdays
Practices in using Swoole ecosystem & migration real production marketplace app to async approach. Which benefits we got and what problems happens on stack with PHP8, Postgresql, Redis, RebbitMQ, Doctrine, coroutines/fibers, concurrency HTTP Server.
In this talk we will present a middleware async architecture based on Expressive and Swoole to speed up web API development and runtime in PHP. Using this approach, you will be able to achieve great performance improvement, up to 4x faster than nginx or Apache (benchmark).
Site Performance - From Pinto to FerrariJoseph Scott
This document discusses ways to improve website performance from slow "Pinto" levels to faster "Ferrari" levels. It recommends using an opcode cache like APC to speed up PHP, optimizing databases with technologies like Memcached, using caching plugins in WordPress, and considering architectures with load balancing and replication. The goal is to identify bottlenecks and apply techniques that reduce page load times through an understanding of how websites and underlying technologies work.
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
Apache's configuration files can be used to configure how Apache operates, but they can also be used to configure PHP and how Apache httpd interacts with PHP. In this talk, Jeff explains the different ways Apache can be configured, explains many of the useful config options available for Apache modules, including our own mod_php, and showcases example of how they can be used with, and instead of, your PHP code.
More information about this HTTP caching talk can be found on https://feryn.eu/speaking/leverage-http-to-deliver-cacheable-websites-codemotion-rome-2018/
Most of us are familiar with HTTP, but when it actually comes to creating cacheable web content, there is still a lot to be learned. In this presentation I will show you how to leverage specific mechanism to achieve a good hit rate without losing touch with some of the challenges of real-life web projects. Keywords: cache control, cache variations, conditional requests, stateful content, HTTP fragments, invalidation. The goals is to empower developers to control the behavior of reverse caching proxies like Varnish, Content Delivery Networks, or even browser cache, using the power of HTTP.
PyCon US 2012 - Web Server Bottlenecks and Performance TuningGraham Dumpleton
The document discusses web server performance bottlenecks and tuning. It notes that the majority of end-user response time is spent on the frontend. It then examines factors that affect web server performance like memory usage, processes vs threads, client impacts, and application requirements. Specific techniques are suggested for improving performance like using processes over threads, isolating slow clients with Nginx, preloading applications, and monitoring servers.
Scalable Architecture Design
DEVIEW 2013 에서 발표한 "오픈소스를 활용한 분산 아키텍처 구현기술" 장표입니다.
Scalable Architecture 디자인을 위해 필요한 다양한 구현 기술 중 몇가지를 소개해 드립니다.
관련된 내용으로 문의 있으시면 메일로 연락 주세요~
"Swoole: double troubles in c", Alexandr VronskiyFwdays
Practices in using Swoole ecosystem & migration real production marketplace app to async approach. Which benefits we got and what problems happens on stack with PHP8, Postgresql, Redis, RebbitMQ, Doctrine, coroutines/fibers, concurrency HTTP Server.
In this talk we will present a middleware async architecture based on Expressive and Swoole to speed up web API development and runtime in PHP. Using this approach, you will be able to achieve great performance improvement, up to 4x faster than nginx or Apache (benchmark).
Site Performance - From Pinto to FerrariJoseph Scott
This document discusses ways to improve website performance from slow "Pinto" levels to faster "Ferrari" levels. It recommends using an opcode cache like APC to speed up PHP, optimizing databases with technologies like Memcached, using caching plugins in WordPress, and considering architectures with load balancing and replication. The goal is to identify bottlenecks and apply techniques that reduce page load times through an understanding of how websites and underlying technologies work.
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
Apache's configuration files can be used to configure how Apache operates, but they can also be used to configure PHP and how Apache httpd interacts with PHP. In this talk, Jeff explains the different ways Apache can be configured, explains many of the useful config options available for Apache modules, including our own mod_php, and showcases example of how they can be used with, and instead of, your PHP code.
More information about this HTTP caching talk can be found on https://feryn.eu/speaking/leverage-http-to-deliver-cacheable-websites-codemotion-rome-2018/
Most of us are familiar with HTTP, but when it actually comes to creating cacheable web content, there is still a lot to be learned. In this presentation I will show you how to leverage specific mechanism to achieve a good hit rate without losing touch with some of the challenges of real-life web projects. Keywords: cache control, cache variations, conditional requests, stateful content, HTTP fragments, invalidation. The goals is to empower developers to control the behavior of reverse caching proxies like Varnish, Content Delivery Networks, or even browser cache, using the power of HTTP.
PyCon US 2012 - Web Server Bottlenecks and Performance TuningGraham Dumpleton
The document discusses web server performance bottlenecks and tuning. It notes that the majority of end-user response time is spent on the frontend. It then examines factors that affect web server performance like memory usage, processes vs threads, client impacts, and application requirements. Specific techniques are suggested for improving performance like using processes over threads, isolating slow clients with Nginx, preloading applications, and monitoring servers.
Scalable Architecture Design
DEVIEW 2013 에서 발표한 "오픈소스를 활용한 분산 아키텍처 구현기술" 장표입니다.
Scalable Architecture 디자인을 위해 필요한 다양한 구현 기술 중 몇가지를 소개해 드립니다.
관련된 내용으로 문의 있으시면 메일로 연락 주세요~
Lights, Camera, Docker: Streaming Video at DramaFeverbridgetkromhout
Bridget Kromhout gave a presentation on how her company DramaFever uses Docker for streaming video. They run Docker in production and have seen peak loads of tens of thousands of requests per second. They use Docker, AWS, and other technologies to build and deploy images automatically and scale their infrastructure elastically. Bridget discussed challenges they faced with Docker and solutions like changing the storage driver and registry configuration to address issues with builds and image pulls failing.
Keep hearing about Plack and PSGI, and not really sure what they're for, and why they're popular? Maybe you're using Plack at work, and you're still copying-and-pasting `builder` lines in to your code without really knowing what's going on? What's the relationship between Plack, PSGI, and CGI? Plack from first principles works up from how CGI works, the evolution that PSGI represents, and how Plack provides a user-friendly layer on top of that.
PECL Picks - Extensions to make your life betterZendCon
This document provides information about various PHP extensions available through PECL (PHP Extension Community Library). It introduces the author and their background, describes what PECL is and provides a brief history. It then discusses the current status of PECL, future plans, and how individuals can get involved. Finally, it highlights and provides code examples for several popular and useful PECL extensions, including APC, Memcache, Imagick, HTTP, UploadProgress and others.
Ansible : what's ansible & use case by REXSaewoong Lee
The document discusses using Ansible to upgrade MySQL from version 3.10 to 3.12 across 1000 servers. It provides steps to create backups and run upgrade scripts on each server using Ansible playbooks and bash scripts in a loop. It also asks how to make the deployment easier, safer and more comfortable. Later sections explain Ansible concepts like installation, modules, playbooks, tags, inventory, variables and demonstrate usage through examples.
The document discusses using Vagrant and cloud platforms like GCP to develop and deploy applications from development to production. It introduces Vagrant as a tool for setting up and managing development environments and shows how to use Vagrant with FreeBSD. It then demonstrates provisioning a FreeBSD VM on GCP and discusses identity and access management on the cloud platform. The document aims to provide an overview of using Vagrant for development and cloud platforms like GCP for production deployments.
In this presentation, I show the audience how to implement HTTP caching best practices in a non-intrusive way in PHP Symfony 4 code base.
This presentation focuses on topics like:
- Caching using cache-control headers
- Cache variations using the Vary header
- Conditional requests using headers like ETag & If-None-Match
- ESI discovery & parsing using headers like Surrogate-Capability & Surrogate-Control
- Caching stateful content using JSON Web Token Validation in Varnish
More information about this presentation is available at https://feryn.eu/speaking/developing-cacheable-php-applications-php-limburg-be/
This document summarizes and compares Ruby HTTP client libraries. It discusses the sync and async APIs of 16 libraries including Net::HTTP, HTTPClient, and Faraday. It covers their compatibility, supported features like keep-alive connections, and performance based on benchmarks. The document recommends libraries based on priorities like speed, HTML handling, API clients, and SSL support. It encourages readers to check the detailed feature matrix and report any errors found.
The document discusses Node.js and asynchronous I/O. It explains that Node.js is an asynchronous event-driven JavaScript runtime that uses a single-threaded model with non-blocking I/O to handle high volumes of simultaneous connections efficiently. It also discusses how Node.js handles asynchronous operations using an event loop and callback functions instead of blocking operations.
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.Graham Dumpleton
Mod_wsgi is an Apache module that allows hosting WSGI applications. It intercepts requests and passes them to the designated WSGI script file. The Apache user needs access permissions to the script file and directories to allow the application to run. Python path needs to be configured to import modules and packages. Static media files also need to be manually mapped to URLs for the Django development server.
The document discusses various technologies for real-time web applications including PSGI, Plack, AnyEvent, AnyMQ, server-push technologies like Comet, WebSockets, and the Web::Hippie and Web::Hippie::Pipe modules. It provides code examples of using AnyEvent and POE for asynchronous programming, AnyMQ for publishing messages to different message queues, and Web::Hippie::Pipe for abstracting persistent bidirectional connections. The document advocates for relaxing the definition of "hippies" to support more connection types and demonstrates how Hippie::Pipe can provide a unified interface.
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
The document discusses using Node.js to build streaming services. It describes how Node.js allows for scalable server-side code using JavaScript and mentions libraries like JSONStream that can be used to parse JSON streams. The document also discusses different types of streaming like simplex, throughput, and duplex streaming and how to manage backpressure in streams.
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksCarlos Sanchez
Puppet Modules are a great way to reuse code, share your development with other people and take advantage of the hundreds of modules already available in the community. But how to create, test and publish them as easily as possible? now that infrastructure is defined as code, we need to use development best practices to build, test, deploy and use Puppet modules themselves. Three steps for a fully automated process
* Continuous Integration of Puppet Modules
* Automatic release and upload to the Puppet Forge
* Deploy to Puppet master
The document discusses developing with vert.x. It provides steps for creating a URL shortener including developing modules with static web server and MongoDB, testing modules individually, creating an API server using EventBus, deploying modules with scripts, and easily testing with auto-deploy. It also briefly explains some key features of vert.x like asynchronous programming, modularity, and polyglot programming.
This document discusses using the MEAN stack with Docker. It provides Dockerfiles to containerize MongoDB, a MongoDB replica set configurator, Node.js, sample applications, and MongoDB Management Service monitoring/backup agents. It also describes using Vagrant to set up a demo environment with Docker containers for a MongoDB replica set and sample app.
This document provides an introduction and overview of a Node.js tutorial presented by Tom Hughes-Croucher. The tutorial covers topics such as building scalable server-side code with JavaScript using Node.js, debugging Node.js applications, using frameworks like Express.js, and best practices for deploying Node.js applications in production environments. The tutorial includes exercises for hands-on learning and demonstrates tools and techniques like Socket.io, clustering, error handling and using Redis with Node.js applications.
Building a real life application in node jsfakedarren
This document provides an overview of building a real-life application in Node.js. It discusses selecting a database like MongoDB, using Express for routing and templating, and Mongoose for modeling and interacting with the database. Key components covered include setting up routing, views, and static assets in Express, performing CRUD operations in MongoDB via Mongoose, and using templating engines like Jade or EJS. The overall goal is to build a basic content management system to demonstrate integrating these technologies.
The document discusses developing cacheable PHP applications. It recommends designing software with HTTP caching in mind by making applications stateless, using well-defined time to lives for cache expiration, and conditionally caching content. It also discusses common problems like time to live variations and authentication that make caching challenging. The document provides examples of implementing caching using Symfony, Twig templates, and Edge Side Includes to break pages into cacheable components.
This document introduces the Flask micro web framework. It discusses that Flask provides URL routing, request and response objects, template engines and other features for web development. Flask is simple and extensible, using Werkzeug and Jinja2. It does not include an ORM or form validation, but supports extensions. The document provides examples of basic routing, using request objects, templates and the development server. It also discusses using SQLAlchemy, WTForms and common patterns like MVC with Flask projects.
The document discusses open source licensing, governance, and community. It notes that open source provides benefits to hackers/developers in having impact and satisfaction, to companies in saving costs and flexibility, and to users in access and security. Open source relies on licenses that allow use, modification, and sharing of content with credit given. Governance involves merit-based contributions and consensus-building through mailing lists. Successful communities avoid toxic members and focus on inclusion.
Presented at the Open Repositories Conference, this presentation describes the Lessons Learned in the Open Source Movement that can be used outside of the traditional IT environment.
Lights, Camera, Docker: Streaming Video at DramaFeverbridgetkromhout
Bridget Kromhout gave a presentation on how her company DramaFever uses Docker for streaming video. They run Docker in production and have seen peak loads of tens of thousands of requests per second. They use Docker, AWS, and other technologies to build and deploy images automatically and scale their infrastructure elastically. Bridget discussed challenges they faced with Docker and solutions like changing the storage driver and registry configuration to address issues with builds and image pulls failing.
Keep hearing about Plack and PSGI, and not really sure what they're for, and why they're popular? Maybe you're using Plack at work, and you're still copying-and-pasting `builder` lines in to your code without really knowing what's going on? What's the relationship between Plack, PSGI, and CGI? Plack from first principles works up from how CGI works, the evolution that PSGI represents, and how Plack provides a user-friendly layer on top of that.
PECL Picks - Extensions to make your life betterZendCon
This document provides information about various PHP extensions available through PECL (PHP Extension Community Library). It introduces the author and their background, describes what PECL is and provides a brief history. It then discusses the current status of PECL, future plans, and how individuals can get involved. Finally, it highlights and provides code examples for several popular and useful PECL extensions, including APC, Memcache, Imagick, HTTP, UploadProgress and others.
Ansible : what's ansible & use case by REXSaewoong Lee
The document discusses using Ansible to upgrade MySQL from version 3.10 to 3.12 across 1000 servers. It provides steps to create backups and run upgrade scripts on each server using Ansible playbooks and bash scripts in a loop. It also asks how to make the deployment easier, safer and more comfortable. Later sections explain Ansible concepts like installation, modules, playbooks, tags, inventory, variables and demonstrate usage through examples.
The document discusses using Vagrant and cloud platforms like GCP to develop and deploy applications from development to production. It introduces Vagrant as a tool for setting up and managing development environments and shows how to use Vagrant with FreeBSD. It then demonstrates provisioning a FreeBSD VM on GCP and discusses identity and access management on the cloud platform. The document aims to provide an overview of using Vagrant for development and cloud platforms like GCP for production deployments.
In this presentation, I show the audience how to implement HTTP caching best practices in a non-intrusive way in PHP Symfony 4 code base.
This presentation focuses on topics like:
- Caching using cache-control headers
- Cache variations using the Vary header
- Conditional requests using headers like ETag & If-None-Match
- ESI discovery & parsing using headers like Surrogate-Capability & Surrogate-Control
- Caching stateful content using JSON Web Token Validation in Varnish
More information about this presentation is available at https://feryn.eu/speaking/developing-cacheable-php-applications-php-limburg-be/
This document summarizes and compares Ruby HTTP client libraries. It discusses the sync and async APIs of 16 libraries including Net::HTTP, HTTPClient, and Faraday. It covers their compatibility, supported features like keep-alive connections, and performance based on benchmarks. The document recommends libraries based on priorities like speed, HTML handling, API clients, and SSL support. It encourages readers to check the detailed feature matrix and report any errors found.
The document discusses Node.js and asynchronous I/O. It explains that Node.js is an asynchronous event-driven JavaScript runtime that uses a single-threaded model with non-blocking I/O to handle high volumes of simultaneous connections efficiently. It also discusses how Node.js handles asynchronous operations using an event loop and callback functions instead of blocking operations.
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.Graham Dumpleton
Mod_wsgi is an Apache module that allows hosting WSGI applications. It intercepts requests and passes them to the designated WSGI script file. The Apache user needs access permissions to the script file and directories to allow the application to run. Python path needs to be configured to import modules and packages. Static media files also need to be manually mapped to URLs for the Django development server.
The document discusses various technologies for real-time web applications including PSGI, Plack, AnyEvent, AnyMQ, server-push technologies like Comet, WebSockets, and the Web::Hippie and Web::Hippie::Pipe modules. It provides code examples of using AnyEvent and POE for asynchronous programming, AnyMQ for publishing messages to different message queues, and Web::Hippie::Pipe for abstracting persistent bidirectional connections. The document advocates for relaxing the definition of "hippies" to support more connection types and demonstrates how Hippie::Pipe can provide a unified interface.
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
The document discusses using Node.js to build streaming services. It describes how Node.js allows for scalable server-side code using JavaScript and mentions libraries like JSONStream that can be used to parse JSON streams. The document also discusses different types of streaming like simplex, throughput, and duplex streaming and how to manage backpressure in streams.
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksCarlos Sanchez
Puppet Modules are a great way to reuse code, share your development with other people and take advantage of the hundreds of modules already available in the community. But how to create, test and publish them as easily as possible? now that infrastructure is defined as code, we need to use development best practices to build, test, deploy and use Puppet modules themselves. Three steps for a fully automated process
* Continuous Integration of Puppet Modules
* Automatic release and upload to the Puppet Forge
* Deploy to Puppet master
The document discusses developing with vert.x. It provides steps for creating a URL shortener including developing modules with static web server and MongoDB, testing modules individually, creating an API server using EventBus, deploying modules with scripts, and easily testing with auto-deploy. It also briefly explains some key features of vert.x like asynchronous programming, modularity, and polyglot programming.
This document discusses using the MEAN stack with Docker. It provides Dockerfiles to containerize MongoDB, a MongoDB replica set configurator, Node.js, sample applications, and MongoDB Management Service monitoring/backup agents. It also describes using Vagrant to set up a demo environment with Docker containers for a MongoDB replica set and sample app.
This document provides an introduction and overview of a Node.js tutorial presented by Tom Hughes-Croucher. The tutorial covers topics such as building scalable server-side code with JavaScript using Node.js, debugging Node.js applications, using frameworks like Express.js, and best practices for deploying Node.js applications in production environments. The tutorial includes exercises for hands-on learning and demonstrates tools and techniques like Socket.io, clustering, error handling and using Redis with Node.js applications.
Building a real life application in node jsfakedarren
This document provides an overview of building a real-life application in Node.js. It discusses selecting a database like MongoDB, using Express for routing and templating, and Mongoose for modeling and interacting with the database. Key components covered include setting up routing, views, and static assets in Express, performing CRUD operations in MongoDB via Mongoose, and using templating engines like Jade or EJS. The overall goal is to build a basic content management system to demonstrate integrating these technologies.
The document discusses developing cacheable PHP applications. It recommends designing software with HTTP caching in mind by making applications stateless, using well-defined time to lives for cache expiration, and conditionally caching content. It also discusses common problems like time to live variations and authentication that make caching challenging. The document provides examples of implementing caching using Symfony, Twig templates, and Edge Side Includes to break pages into cacheable components.
This document introduces the Flask micro web framework. It discusses that Flask provides URL routing, request and response objects, template engines and other features for web development. Flask is simple and extensible, using Werkzeug and Jinja2. It does not include an ORM or form validation, but supports extensions. The document provides examples of basic routing, using request objects, templates and the development server. It also discusses using SQLAlchemy, WTForms and common patterns like MVC with Flask projects.
The document discusses open source licensing, governance, and community. It notes that open source provides benefits to hackers/developers in having impact and satisfaction, to companies in saving costs and flexibility, and to users in access and security. Open source relies on licenses that allow use, modification, and sharing of content with credit given. Governance involves merit-based contributions and consensus-building through mailing lists. Successful communities avoid toxic members and focus on inclusion.
Presented at the Open Repositories Conference, this presentation describes the Lessons Learned in the Open Source Movement that can be used outside of the traditional IT environment.
ApacheCon 2014 - What's New in Apache httpd 2.4Jim Jagielski
The document summarizes new features in Apache HTTPD version 2.4, including improved performance through the Event MPM, faster APR, and reduced memory usage. It describes new configuration options like finer timeout controls and the <If> directive. New modules like mod_lua and mod_proxy submodules are highlighted. The document also discusses how Apache has adapted to cloud computing through dynamic proxying, load balancing, and self-aware environments.
Apache httpd v2.4 is well-suited for cloud environments due to improvements that increase performance, flexibility, and dynamic configuration capabilities. It has been enhanced as a reverse proxy with load balancing and support for additional protocols. Benchmark tests show that for transaction speed, the prefork MPM performs best, though other MPMs are on par for concurrency. Apache remains a robust and customizable web server option.
The document discusses governance and community building for open source projects. It addresses topics like licenses, meritocracy, walled gardens, the benevolent dictator for life governance model, and strategies for community building through email lists, consensus driving, and inclusive participation. The overall content is aimed at providing guidance on managing open source projects and communities.
The document introduces the Apache Software Foundation Sponsorship Program, which provides a way for corporations to financially support the ASF through sponsorships at bronze, silver, gold, and platinum levels in exchange for acknowledgment and marketing benefits. Sponsorships help fund the ASF's infrastructure, events, projects and community outreach. Current charter sponsors include Google, HP, and others.
The document provides an overview of the Apache Software Foundation (ASF) in 2011. It discusses that the ASF started with 21 members and 2 projects and has now grown to 390 members and over 95 top-level projects. It summarizes some of the accomplishments in 2011, including establishing several new top-level projects and approving the 2011-2012 budget. The document also discusses how the ASF has adapted over time to increased scale while maintaining its community-focused principles.
Apache httpd v2.4 provides significant improvements for high performance and suitability for the cloud. Some key enhancements include improved reverse proxy capabilities, load balancing, bandwidth control, timeouts, and logging. Benchmark results show that Apache httpd can match or exceed the performance of Nginx for certain workloads. Overall, Apache httpd 2.4 remains highly competitive for both traditional and cloud-based web serving.
Running Successful Open Source ProjectsJim Jagielski
This document provides an overview of running a successful open source project. It discusses what open source is, the benefits it provides, and common misconceptions. It then describes the history and structure of the Apache Software Foundation, how it supports open source projects, and the principles of meritocracy, consensus-based decision making, and collaborative development that guide projects. Successful Apache projects like HTTP Server and Tomcat are discussed as examples.
This document discusses open source projects and governance. It defines open source as software that is licensed under an OSI approved license and developed openly and collaboratively, usually via mailing lists. The document outlines the structure of the Apache Software Foundation, how it oversees open source projects through Project Management Committees (PMCs), and the principles of "The Apache Way" including meritocracy, consensus-based decision making, and collaborative development.
The document discusses open source software. It defines open source as software that is licensed under an OSI or FSF approved license, provides access to source code, and allows users to modify and distribute the source code. Open source uses a community-based development model and brings a scientific approach to software development. It has benefits for developers, companies, and users by enabling collaboration, innovation, and avoiding vendor lock-in. The document also discusses open source licensing models, governance structures, and success stories like Apache HTTP Server and Linux.
The document provides an overview and year in review of the Apache Software Foundation. It summarizes that the ASF started with 21 members and 2 projects and has grown significantly over time to now include over 330 members, 52 emeritus members, over 70 top-level projects, and around 30 incubator projects. It also notes several new projects that were established and projects accepted into incubation over the past year.
The document discusses open source licensing, governance, and community. It outlines benefits of open source for hackers/developers, companies/organizations, and users. These include impacting development, personal satisfaction, saving resources, and access to source code. The document also covers open source licensing options and how to build an open source community through consensus, meritocracy, and inclusive practices.
The document provides an overview and year in review of the Apache Software Foundation. It discusses how the ASF has grown from 21 members and 2 projects to over 270 members and 63 top-level projects today. While continuing to grow, the ASF has adapted its administrative structure to better support volunteers through outsourcing some tasks. Last year saw the graduation of new projects from incubation, upgrades to infrastructure, and growth in sponsorship programs. The ASF looks toward continued growth in members and projects in the coming year.
This document provides an overview of advanced load balancing capabilities in Apache HTTP Server 2.2 using the mod_proxy module. Key points include:
- Mod_proxy allows Apache to function as a reverse proxy or load balancer for backend servers.
- New in 2.2 are improvements like large file support, graceful stop, mod_dbd integration, and better debugging.
- Load balancing is implemented through balancer providers that can be customized. Default providers balance by requests, traffic, or server busyness.
- Features like connection pooling, sticky sessions, failover clusters, and an embedded admin interface provide robust load balancing functionality.
The document discusses open source software and the Apache Software Foundation. It notes that open source is crucial for business and that Drupal is part of its success. It provides background on Jim Jagielski and his role in Apache. It outlines reasons why open source matters for hackers, businesses, and users, including innovation, cost savings, and avoiding vendor lock-in. It acknowledges risks like a desire for control but argues communities are important to resist forks and share code through collaboration.
My keynote at the CloudStack Collaboration Conference 2012 event. Overview of The Apache Way, the Lesson's Learned at the Apache Software Foundation on building code and community.
What's New and Newer in Apache httpd-24Jim Jagielski
Jim Jagielski presents an overview of new features and enhancements in Apache HTTP Server version 2.4, including configuration and runtime improvements, new modules and capabilities, cloud and proxy enhancements, performance increases, and support for HTTP/2. Key highlights include finer-grained configuration controls, new modules like mod_lua and mod_macro, improved proxy and load balancing functionality, better performance through optimizations and new MPMs like Event, and initial HTTP/2 support.
The document summarizes the key new features and enhancements in Apache HTTPD version 2.4, including improvements to configuration, new modules, cloud/proxy enhancements, and performance increases. Some highlights include finer-grained configuration and logging controls, new modules like mod_lua and mod_macro, enhanced proxy and load balancing capabilities, and continued performance optimizations. Benchmark results show Apache HTTPD competing well and sometimes outperforming Nginx in various concurrency and throughput tests.
Apache httpd 2.4 Reverse Proxy: The Hidden GemJim Jagielski
The document discusses the reverse proxy capabilities of Apache HTTP Server (httpd) version 2.4. It notes that httpd is commonly used as a front-end reverse proxy and that its proxy capabilities have improved in version 2.4, including support for load balancing, connection pooling, and dynamic configuration. The document provides examples of configuring reverse proxying, load balancing clusters, and other advanced proxy features in httpd.
This document discusses profiling PHP applications to improve performance. It recommends profiling during development to identify inefficiencies. The document introduces Xdebug for profiling PHP code and Webgrind, a PHP frontend for visualizing Xdebug profiles. It provides an example of profiling a sample PHP application, identifying issues, making code changes, and verifying performance improvements through re-profiling.
ApacheCon 2017: What's new in httpd 2.4Jim Jagielski
What new is Apache httpd 2.4, both in upgrading from httpd 2.2 and well as new features in this latest version. Performance, HTTP/2, reverse proxy and cache!
This document contains slides from a presentation given by Jim Jagielski at APACHECON North America on September 9-12, 2019. The presentation provides an overview and review of key features of Apache HTTP Server version 2.4, including improvements to configuration, new modules, enhancements for cloud/proxy usage, and performance increases. It highlights capabilities like mod_macro for virtual hosts, expression-based configuration with <IfDefine>, and health checking of backend servers. The presentation aims to dispel myths about Apache being outdated and argues it remains highly relevant due to its flexibility and performance.
Converting Your Dev Environment to a Docker Stack - php[world]Dana Luther
Heard a lot about docker but not sure where to start? Frustrated maintaining development VMs? In this presentation we will go over the simplest ways to convert your development environment over to a docker stack, including support for full acceptance testing with Selenium. We’ll then go over how to modify the stack to mimic your production/pre-production environment(s) as closely as possible, and demystify working with the containers in the stack.
This document discusses the use of Chef, an open source configuration management tool, for server management. It notes that Chef allows for repeatable system provisioning and ease of scaling servers without vendor lock-in. Chef manages over 120 servers across 10 environments for the company discussed. Chef uses Ruby code and resources like packages, templates and services to configure and maintain server configurations. It works both on single servers via chef-solo and with a centralized chef-server for cluster management. Common resources, attributes, definitions and recipes are discussed as the basic building blocks for automation with Chef. Gotchas around idempotency, package sources and attribute abuse are also covered.
Running Docker in Development & Production (#ndcoslo 2015)Ben Hall
The document discusses running Docker in development and production. It covers:
- Using Docker containers to run individual services like Elasticsearch or web applications
- Creating Dockerfiles to build custom images
- Linking containers together and using environment variables for service discovery
- Scaling with Docker Compose, load balancing with Nginx, and service discovery with Consul
- Clustering containers together using Docker Swarm for high availability
Deploying configurable frontend web application containersJosé Moreira
Deploying containerized client-side web applications requires a different configuration strategy compared to system applications. The runtime of client-side web applications is the client-side web browser and, unlike other applications which can utilize environment values, configuration has to be hard-coded in the Javascript source code.
Plack provides a common interface called PSGI (Perl Server Gateway Interface) that allows Perl web applications to run on different web servers. It includes tools like Plackup for running PSGI applications from the command line and middleware for adding functionality. Plack has adapters that allow many existing Perl web frameworks to run under PSGI. It also provides high performance PSGI servers and utilities for building and testing PSGI applications.
Converting Your Dev Environment to a Docker Stack - CascadiaDana Luther
The document discusses converting a development environment to a Docker stack. It describes some of the benefits of using Docker for consolidating different environments that may have varying PHP and MySQL versions. It provides an example docker-compose.yml file that defines services for Nginx, MySQL, and PHP-FPM containers along with networking and volume configurations. It also includes some sidebars on Docker concepts like the hierarchy of images, containers, services and stacks, as well as common Docker commands.
The document discusses Apache httpd v2.4 and its use as a reverse proxy. Key points include: Apache httpd v2.4 has improvements that make it suitable for cloud environments and dynamic configurations; it supports load balancing, clustering, caching, and offloading SSL to improve performance and high availability when used as a reverse proxy; directives like ProxyPass and ProxyPassReverse are used to configure proxying and load balancing using modules like mod_proxy and mod_proxy_balancer.
This document provides a summary of steps to secure an Apache and PHP server environment. It discusses locking down the server operating system, hardening Apache configurations, securing PHP settings and development practices, and securely configuring common PHP applications like phpMyAdmin and phpNuke. The key recommendations are to turn off unnecessary services, enable logging and monitoring, lock down filesystem permissions, use modules like mod_security and mod_dosevasive to filter requests, follow secure PHP development best practices, and carefully configure applications following security guidelines.
This document discusses using Nginx as a web server with PHP. It provides configuration examples for using Nginx with PHP-FPM to pass PHP requests. Benchmarks show Nginx performs better than Apache. It also discusses using Nginx as a reverse proxy cache, and provides configuration examples to cache content and pass caching controls from PHP.
The need to scale is in high demand in an age where everything is moving to the cloud. Though the standard Apache configuration could handle a website with moderate traffic, the minute it gets slash dotted or twitted multiple times could spell an embarrassing crash landing! If you are the administrator of such a website then good luck finding another job! On the other hand you value high availability in the midst of popularity then read on. On this one day workshop, we will show you how to scale your website and webapps to scale to handle thousands of simultaneous sessions the right way. The topics covered will include:
- Setting up Apache and NGiNXM
- Setting up a sample LAMP web app
- Benchmarking Apache performance
- Fine tuning Apache to improve performance
- Fine tuning NGiNX to improve performance
- Discussion about code level improvements when developing custom webapps using PHP
Similar to ApacheConNA 2015: What's new in Apache httpd 2.4 (20)
The document discusses Open Source Program Offices (OSPOs), which are centers of excellence within organizations responsible for the strategic engagement with open source. The key responsibilities of an OSPO include maintaining license compliance, defining the open source strategy, communicating it, overseeing execution, facilitating open source use, engaging with communities, and fostering an open source culture. Having an OSPO becomes more important as organizations depend more on open source. An OSPO provides benefits like better management of security risks and helps organizations of all sizes. Challenges include culture, processes, tools, and budget. Success is defined by each organization.
The History of The Apache Software FoundationJim Jagielski
- The Apache Software Foundation (ASF) was incorporated in 1999 to provide legal, financial and organizational support for open source software projects.
- It started with two projects - the Apache web server and Apache conferences - and has grown to over 150 projects with over 400 members.
- The ASF is a non-profit organization run by volunteers and provides infrastructure for collaborative, community-based development of open source software.
The document discusses The Apache Way, which are the governance principles and guiding tenets for how Apache Project Management Committees (PMCs) operate. It focuses on why understanding the origins and reasons behind The Apache Way is important. The Apache Way was developed to optimize for volunteer contributors, focus on community over code, and encourage long-term sustainable open source projects and software. Some key aspects of The Apache Way discussed are meritocracy, peer-based communities, consensus decision making, transparency, and collaborative development.
Jim Jagielski discusses the Apache HTTPD v2.4 reverse proxy capabilities. Key points include:
1) Apache HTTPD v2.4 includes improvements that make it suitable for cloud environments and high performance as a reverse proxy, including support for asynchronous I/O and additional load balancing mechanisms.
2) As a reverse proxy, Apache HTTPD can provide security, load balancing, caching, and high availability for backend servers located behind the proxy.
3) Apache HTTPD v2.4's reverse proxy functionality includes support for additional protocols, load balancing algorithms, dynamic configuration, and HTTP/2.
InnerSource 101 for FinTech and FinServJim Jagielski
An overview of the topic, benefits, techniques and challenges of implementing an InnerSource policy in the FinTech/FinServ arena. From my talk at the Open Source Strategy Summit 2017 in NYC.
All Things Open 2017: Open Source LicensingJim Jagielski
The document discusses open source licensing and provides an overview of key concepts:
- It introduces Jim Jagielski and his background in open source software development.
- Licensing determines how software can be used, modified, and shared. Choosing the right license is important to avoid legal risks.
- Common open source licenses include permissive licenses like MIT, weak copyleft licenses like LGPL, and strong copyleft licenses like GPL. The license chosen depends on goals like commercial use or community development.
All Things Open 2017: The Apache Software Foundation 101Jim Jagielski
The document discusses the Apache Software Foundation (ASF) and open source software development. It provides an overview of the ASF, including that it is a non-profit organization founded in 1999 to support open source projects. It describes the ASF's structure and governance model, including that projects use a meritocratic and consensus-based process. It also outlines some of the core tenets of "The Apache Way", such as meritocracy, transparency, and community-driven development.
All Things Open 2017: Foundations of Inner SourceJim Jagielski
The document discusses the principles of InnerSource, which is applying open source development principles within enterprises. It outlines the principles of InnerSource as culture, communication, transparency, collaboration, community, and meritocracy. It describes the Apache Way, which focuses on meritocracy, transparency, and community. The Apache Way originated from focusing on volunteer contributors and community.
Jim Jagielski gave a presentation about open source licenses. He is the co-founder and director of the Apache Software Foundation and has worked on many open source projects. He explained that licenses determine how software can be used, modified, and shared. The main types of open source licenses are permissive, weak copyleft, and strong copyleft licenses. Jagielski emphasized that the license chosen should align with the project's goals and that changing licenses later can be difficult.
The document discusses Jim Jagielski's presentation on InnerSource and the Apache Way at the InnerSource Commons Summit. It provides an overview of what InnerSource is, why companies adopt it, and the basic principles of the Apache Way, including meritocracy, peer-based collaboration, consensus decision making, and individual participation. It also outlines the principles of InnerSource, such as culture, communication, transparency, collaboration, and community.
InnerSource: Enterprise Lessons from Open SourceJim Jagielski
Jim Jagielski discusses the concept of "Inner Sourcing", which involves applying principles and techniques from open source software development within corporate IT organizations. Some key principles discussed include transparency, collaboration, community, and meritocracy. Techniques for implementing Inner Sourcing include using tools that enable communication, collaboration and open development. Challenges that must be overcome include resistance to change, properly rewarding merit, maintaining business focus and accountability. Overall, Inner Sourcing aims to improve efficiency, speed, costs and talent through more open and collaborative development practices.
The document reports on the growth of the Apache Foundation from November 2015 to November 2016, including a growth in project committees and projects under management. It discusses why the ASF continues to grow, noting that it is defined by the people who do the work on the projects rather than central governance. The ASF operates through consensus rather than having leaders, and works for the public good. It encourages contributions of resources like people rather than cash to support projects.
The topics of Free Software/Open Source licensing and governance can be complex and confusing. This presentation provides for an easy and clear description of the hows and whys of both. Presented at the All Things Open 2016 Conference in Raleigh, NC
Inner Source: Enterprise Lessons from the Open Source Community.Jim Jagielski
Slides from my Inner Sourcing talk from ApacheCon NA 2016. Inner Sourcing is using the methods and techniques of successful open source projects inside Enterprise IT.
The slides from my Apache Way talk at ApacheCon NA 2016. All about the Apache Way, lessons learned from the ASF about code, community and collaboration.
From the Linux Foundation Collaboration Summit 2016, my slides from the Why Community Matters presentation.
Why does community matter in open source and in open source foundations: because, frankly, there is nothing else.
Securing BGP: Operational Strategies and Best Practices for Network Defenders...APNIC
Md. Zobair Khan,
Network Analyst and Technical Trainer at APNIC, presented 'Securing BGP: Operational Strategies and Best Practices for Network Defenders' at the Phoenix Summit held in Dhaka, Bangladesh from 23 to 24 May 2024.
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...APNIC
Adli Wahid, Senior Internet Security Specialist at APNIC, delivered a presentation titled 'Honeypots Unveiled: Proactive Defense Tactics for Cyber Security' at the Phoenix Summit held in Dhaka, Bangladesh from 23 to 24 May 2024.
HijackLoader Evolution: Interactive Process HollowingDonato Onofri
CrowdStrike researchers have identified a HijackLoader (aka IDAT Loader) sample that employs sophisticated evasion techniques to enhance the complexity of the threat. HijackLoader, an increasingly popular tool among adversaries for deploying additional payloads and tooling, continues to evolve as its developers experiment and enhance its capabilities.
In their analysis of a recent HijackLoader sample, CrowdStrike researchers discovered new techniques designed to increase the defense evasion capabilities of the loader. The malware developer used a standard process hollowing technique coupled with an additional trigger that was activated by the parent process writing to a pipe. This new approach, called "Interactive Process Hollowing", has the potential to make defense evasion stealthier.
2. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
About me
➡ Jim Jagielski
➡ Hacker and developer
➡ Wearer o’ many hats at the ASF
➡ Director and President: Outercurve
➡ Council member: MARSEC-XL
➡ Consulting Engineer with Red Hat
➡ @jimjag
3. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Hold on a tic
➡ How do you define “new”??
4. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
httpd is sooo old school (aka fud)
➡ Apache doesn’t scale (its SLOW)
➡ http://www.youtube.com/watch?v=bzkRVzciAZg
➡ Apache is too generalized
➡ Apache is too complex (config file)
➡ really?
➡ Apache is too old
(yeah, just like Linux)
vs
It’s Squagels!
5. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4 - design drivers
➡ New features and improve old ones
➡ Support for async I/O w/o dropping support for older systems
➡ Larger selection of usable MPMs: added Event, etc...
➡ Leverage higher-performant versions of APR
➡ Increase performance
➡ Reduce memory utilization
➡ The Cloud
Currently at version 2.4.12 (2.4.1 went GA Feb 21, 2012)
6. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s New: Apache httpd 2.4
➡ Performance Increases
➡ Configuration / Runtime Improvements
➡ New Modules / Capabilities
➡ Cloud / Proxy Enhancements
7. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Performance
➡ Event MPM : no longer experimental
➡ Faster, more efficient APR
➡ Smaller memory footprint
➡ More efficient data structures (worker and event)
8. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
nginx vs Event (typical)
Apache - Event MPM
0
500
1000
1500
2000
nginx
0
500
1,000
1,500
2,000
Open Write Read Close
Increasing concurrency Increasing concurrency
9. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Total req/resp time
Comparison - total transaction (close)
0
500
1000
1500
2000
Prefork Worker Event nginx
Increasing concurrency
10. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Resp to Req. Bursts - httperf100 ---> 10000
0.00
1.75
3.50
5.25
7.00
min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev
prefork worker event nginx
Increasing concurrency
11. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Independent benchmark
Source: Ryosuke Matsumoto : http://blog.matsumoto-r.jp/?p=1812
#!/bin/sh
RESULT='./result.txt'
for port in 80 8080 8888
do
#for count in 1000 2000 3000 4000 5000 6000 7000 8000
9000 10000
#for count in 11000 12000 13000 14000 15000 16000 17000
18000 19000 20000
for count in 21000 22000 23000 24000 25000 26000 27000
28000 29000 30000
do
echo -n "$port $count " >> $RESULT
httperf --rate $count --num-conns 25000 --server
ipaddr --port $port
--uri=/test.html | grep "Request rate:" >>
$RESULT.$port
sleep 60
done
done
12. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Benchmark Conclusions
➡ Events, polling and fork/spawn creates overhead: good for
“more bang for buck” system, bad for performance for that
request
➡ For concurrency, Event & Worker on par with nginx*
➡ For transaction speed, prefork shines
➡ Let’s work on leaner MPM (more streamlined)
➡ *Main Caveats:
➡ Apache is never resource starved
➡ If memory is a scarce resource, nginx still better (for now ;) )
➡ More work can (and should) be done
13. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Finer control of timeouts, esp. during requests
➡ mod_reqtimeout
➡ KeepAliveTimout down to the millisecond
➡ Finer control over logging
➡ per module/per directory
➡ new logging levels (TRACE[1-8])
LogLevel notice
LogLevel info ssl:warn
<Directory "/usr/local/apache/htdocs/foo">
LogLevel debug
</Directory>
RequestReadTimout notice=10 body=30
14. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ <If> supports per-request conditions
➡ General purpose expression parser (BNF compatible)
# Compare the host name to example.com and
# redirect to www.example.com if it matches
<If "%{HTTP_HOST} == 'example.com'">
Redirect permanent / http://www.example.com/
<ElseIf "%{HTTP_HOST} == ‘foobarfoo.com'">
Redirect permanent / http://www2.example.com/
</If>
<If “%{QUERY_STRING} =~ /dohtml/“>
ForceType text/html
</If>
15. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ mod_macro
<Macro VHost $name $domain>
<VirtualHost *:80>
ServerName $domain
ServerAlias www.$domain
DocumentRoot /var/www/vhosts/$name
ErrorLog /var/log/httpd/$name.error_log
CustomLog /var/log/httpd/$name.access_log combined
</VirtualHost>
</Macro>
Use VHost example example.com
Use VHost myhost hostname.org
Use VHost apache apache.org
UndefMacro VHost
From my
ApacheCon 2000
Preso
16. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Simple config-file variables: <Define>
<IfDefine TEST>
Define servername test.example.com
</IfDefine>
<IfDefine !TEST>
Define servername www.example.com
Define SSL
</IfDefine>
DocumentRoot /var/www/${servername}/htdocs
17. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Other stuff:
➡ No more NameVirtualHost
➡ AllowOverrideList
➡ Loadable MPM modules
➡ Recall that different MPMs have different config directives!
AllowOverride None
AllowOverrideList Redirect RedirectMatch Header
./configure —enable-mpms-shared=all
LoadModule mpm_event_module modules/mod_mpm_event.so
18. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Require
➡ Removes order/deny insanity!
AuthType Basic
AuthName "Restricted Resource"
AuthBasicProvider file
AuthUserFile /web/users
AuthGroupFile /web/groups
Require group admin
<Directory /www/docs>
<RequireAll>
Require group alpha beta
Require not group reject
</RequireAll>
</Directory>
<Directory /www/docs2>
Require all granted
</Directory>
19. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_lua (semi-experimental, but we use it!)
<Files *.lua>
SetHandler lua-script
</Files>
…
example.lua
require "string"
function handle(r)
r.content_type = "text/plain"
if r.method == 'GET' then
r:puts("Hello Lua World!n")
for k, v in pairs( r:parseargs() ) do
r:puts( string.format("%s: %sn", k, v) )
end
elseif r.method == 'POST' then
r:puts("Hello Lua World!n")
for k, v in pairs( r:parsebody() ) do
r:puts( string.format("%s: %sn", k, v) )
end
elseif r.method == 'PUT' then
r:puts("Unsupported HTTP method " .. r.method)
r.status = 405
return apache2.ok
else
return 501
end
return apache2.OK
end
20. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Proxy (sub)Modules
➡ mod_proxy submodules:
➡ mod_proxy_fcgi
➡ mod_proxy_scgi
➡ mod_proxy_wstunnel
➡ mod_proxy_html
➡ mod_proxy_express
ProxyExpressEnable on
ProxyExpressDBMFile emap
…
##
##express-map.txt: httxt2dbm -i express-map.txt -o emap
##
www1.example.com http://192.168.002.2:8080
www2.example.com http://192.168.002.12:8088
www3.example.com http://192.168.002.10
...
www6341.example.com http://192.168.211.26
21. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_buffer
➡ buffer the i/o stacks w/i httpd
➡ mod_sed
➡ True sed functionality, alternate to mod_substitute
➡ mod_remoteip
➡ allow access to the real client IP address
<Directory "/var/www/docs/status">
AddOutputFilter Sed html
OutputSed "s/complete/DONE/g"
OutputSed “s/in-progress/TODO/g"
</Directory>
RemoteIPHeader X-Client-IP
22. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_session
➡ easily maintain application server state
➡ mod_auth_form
➡ Form-based auth can now be handled internally
<Location /dologin.html>
SetHandler form-login-handler
AuthFormLoginRequiredLocation http://example.com/login.html
AuthFormLoginSuccessLocation http://example.com/success.html
AuthFormProvider file
AuthUserFile conf/passwd
AuthType form
AuthName realm
Session On
SessionCookieName session path=/
SessionCryptoPassphrase secret
</Location>
23. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_log_debug
➡ Add debug logging at any hook
➡ mod_ratelimit
➡ (basic) bandwidth limiting for clients
<Location /foo>
LogMessage “subreq to foo” hook=type_checker expr=%{IS_SUBREQ}
</Location>
<Location /downloads>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 400
</Location>
24. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Even more!
➡ mod_cache
➡ Can serve stale data if required
➡ X-Cache-Header now supports HIT/MISS/
REVALIDATE
➡ Can cache HEAD
➡ htcacheclean improvements
➡ mod_socache / mod_slotmem
➡ Data object/blog storage mechanisms
25. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Why Dynamic Proxy Matters
➡ Apache httpd still the most frequently used front-end
➡ Proxy capabilities must be cloud friendly
➡ Front-end must be dynamic friendly
26. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4 proxy
➡ Reverse Proxy Improvements
➡ Supports FastCGI, SCGI, Websockets in balancer
➡ Additional load balancing mechanisms
➡ Runtime changing of clusters w/o restarts
➡ Support for dynamic configuration
➡ mod_proxy_express
➡ mod_fcgid and fcgistarter
➡ Brand New: Support for Unix Domain Sockets
27. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Putting it all together
<Proxy balancer://foo>
BalancerMember http://php1:8080/ loadfactor=1
BalancerMember http://php2:8080/ loadfactor=4
BalancerMember http://phpbkup:8080/ loadfactor=1 status=+h
BalancerMember http://phpexp:8080/ lbset=1
ProxySet lbmethod=bytraffic
</Proxy>
<Proxy balancer://javaapps>
BalancerMember ajp://tc1:8089/ loadfactor=1
BalancerMember ajp://tc2:8089/ loadfactor=4
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass /apps/ balancer://foo/
ProxyPassReverse /apps/ balancer://foo/
ProxyPass /serv/ balancer://javaapps/
ProxyPass /images/ http://images:8080/
ProxyPass /foo unix:/home/www.socket|http://localhost/bar/
28. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
HeartBeat / HeartMonitor
➡ New LB (load balance) method
➡ Uses multicast between gateway and reverse proxies
➡ Provides heartbeat (are you there?) capability
➡ Also provides basic load info
➡ This info stored in shm, and used for balancing
➡ Multicast can be an issue
➡ Use mod_header with %l, %i, %b (loadavg, idle, busy)
➡ but no LBmethod currently uses this :(
➡ We need a universal “load” measure
29. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
balancer-manager
➡ Embedded proxy admin web interface
➡ Allows for real-time
➡ Monitoring of stats for each worker
➡ Adjustment of worker params
➡ Allows for real-time
➡ Addition of new workers/nodes
➡ Change of LB methods
➡ Can be persistent!
➡ More RESTful
➡ Can be CLI-driven
30. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s next?
➡ Support for HTTP/2 (mod_h2)
➡ Support for ALPN (TLS)
➡ Better async support
➡ More MPMs
➡ motorz:
➡ Streamlined event driven MPM
➡ Prelim benchmarks: 50% faster, 33% the size
➡ You tell us!
31. This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Thanks
Twitter: @jimjag
Emails:
jim@jaguNET.com
jjagielski@outercurve.org
jim@apache.org
jimjag@redhat.com
http://www.slideshare.net/jimjag/