Home php教程 PHP开发 Apache performance optimization (4)

Apache performance optimization (4)

Dec 21, 2016 am 11:26 AM

The following is the default configuration section of prefork:

StartServers 5 //

MinSpareServers 5 //The minimum number of idle processes is set.

MaxSpareServers 10 //Set the maximum number of idle processes. If the number of idle processes is greater than this value, Apache will automatically kill some redundant processes. Do not set this value too large, but if the value is smaller than MinSpareServers, Apache will automatically adjust it to MinSpareServers+1. If the site load is heavy, consider increasing both MinSpareServers and MaxSpareServers.

MaxClients 150 // MaxClients is the most important of these instructions. It sets the requests that Apache can handle at the same time and is the parameter that has the greatest impact on Apache performance. The default value of 150 is far from enough. If the total number of requests has reached this value (can be confirmed by ps -ef|grep http|wc -l), then subsequent requests will be queued until a processed request is completed. . This is the main reason why there are a lot of system resources left but HTTP access is very slow. System administrators can dynamically adjust this value based on hardware configuration and load conditions. Although theoretically the larger this value, the more requests that can be processed, Apache's default limit cannot be greater than 256 (derived from #define DEFAULT_SERVER_LIMIT 256 in 2.0). If this value is set to greater than 256, Apache will not start. In fact, 256 is not enough for sites with slightly heavier loads. In Apache 1.3, this is a hard limit. If you want to increase this value, you must search for 256 in src/include/httpd.h under the source code tree that was manually modified before "configure", and you will find the line "#define HARD_SERVER_LIMIT 256". Change 256 to the value you want to increase (such as 4000), and then recompile Apache. The ServerLimit directive was newly added to Apache 2.0, so that MaxClients can be increased without recompiling Apache. When using ServerLimit, just add a separate line here. If the value of ServerLimit exceeds 20000 as defined here, you must modify server/mpm/prefork/prefork.c #define MAX_SERVER_LIMIT 20000. Change 20000 to a larger value.

MaxRequestsPerChild 0 //Set the number of requests that each child process can handle. Each child process will be automatically destroyed after processing "MaxRequestsPerChild" requests. 0 means infinite, that is, the child process is never destroyed. Although the default setting of 0 allows each child process to handle more requests, setting it to a non-zero value also has two important benefits: it can prevent accidental memory leaks; it will automatically reduce the number of child processes when the server load decreases. number.

The working principle of worker is that the main control process generates "StartServers" sub-processes. Each sub-process contains a fixed number of ThreadsPerChild threads, and each thread processes requests independently. Likewise, in order not to spawn threads when requests come in.

The number of threads each process can have is fixed. The server will adjust to increase or decrease the number of processes based on load conditions. A single controlling process is responsible for the establishment of child processes. Each child process can create a fixed number of threads specified by ThreadsPerChild. Then, a separate thread listens for and handles incoming connections.

Apache always tries to maintain a spare or idle service thread pool. In this way, the client does not need to wait for the thread or process to be established before it can be processed. The number of processes initially created is determined by the StartServers directive. Afterwards, Apache detects the total number of idle threads in all processes, and creates or ends processes to keep the total number within the range specified by MinSpareThreads and MaxSpareThreads. Since this process is self-tuning, there is little need to modify the default values ​​of these instructions. The maximum number of clients that can be processed simultaneously depends on the MaxClients directive, and the maximum number of processes established depends on the ServerLimit directive. ServerLimit multiplied by ThreadsPerChild must be greater than or equal to MaxClients.

The above is the content of Apache performance optimization (4). For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Performance optimization and horizontal expansion technology of Go framework? Performance optimization and horizontal expansion technology of Go framework? Jun 03, 2024 pm 07:27 PM

In order to improve the performance of Go applications, we can take the following optimization measures: Caching: Use caching to reduce the number of accesses to the underlying storage and improve performance. Concurrency: Use goroutines and channels to execute lengthy tasks in parallel. Memory Management: Manually manage memory (using the unsafe package) to further optimize performance. To scale out an application we can implement the following techniques: Horizontal Scaling (Horizontal Scaling): Deploying application instances on multiple servers or nodes. Load balancing: Use a load balancer to distribute requests to multiple application instances. Data sharding: Distribute large data sets across multiple databases or storage nodes to improve query performance and scalability.

C++ Performance Optimization Guide: Discover the secrets to making your code more efficient C++ Performance Optimization Guide: Discover the secrets to making your code more efficient Jun 01, 2024 pm 05:13 PM

C++ performance optimization involves a variety of techniques, including: 1. Avoiding dynamic allocation; 2. Using compiler optimization flags; 3. Selecting optimized data structures; 4. Application caching; 5. Parallel programming. The optimization practical case shows how to apply these techniques when finding the longest ascending subsequence in an integer array, improving the algorithm efficiency from O(n^2) to O(nlogn).

The Way to Optimization: Exploring the Performance Improvement Journey of Java Framework The Way to Optimization: Exploring the Performance Improvement Journey of Java Framework Jun 01, 2024 pm 07:07 PM

The performance of Java frameworks can be improved by implementing caching mechanisms, parallel processing, database optimization, and reducing memory consumption. Caching mechanism: Reduce the number of database or API requests and improve performance. Parallel processing: Utilize multi-core CPUs to execute tasks simultaneously to improve throughput. Database optimization: optimize queries, use indexes, configure connection pools, and improve database performance. Reduce memory consumption: Use lightweight frameworks, avoid leaks, and use analysis tools to reduce memory consumption.

Performance optimization in Java microservice architecture Performance optimization in Java microservice architecture Jun 04, 2024 pm 12:43 PM

Performance optimization for Java microservices architecture includes the following techniques: Use JVM tuning tools to identify and adjust performance bottlenecks. Optimize the garbage collector and select and configure a GC strategy that matches your application's needs. Use a caching service such as Memcached or Redis to improve response times and reduce database load. Employ asynchronous programming to improve concurrency and responsiveness. Split microservices, breaking large monolithic applications into smaller services to improve scalability and performance.

How to optimize the performance of web applications using C++? How to optimize the performance of web applications using C++? Jun 02, 2024 pm 05:58 PM

C++ techniques for optimizing web application performance: Use modern compilers and optimization flags to avoid dynamic memory allocations Minimize function calls Leverage multi-threading Use efficient data structures Practical cases show that optimization techniques can significantly improve performance: execution time is reduced by 20% Memory Overhead reduced by 15%, function call overhead reduced by 10%, throughput increased by 30%

How to quickly diagnose PHP performance issues How to quickly diagnose PHP performance issues Jun 03, 2024 am 10:56 AM

Effective techniques for quickly diagnosing PHP performance issues include using Xdebug to obtain performance data and then analyzing the Cachegrind output. Use Blackfire to view request traces and generate performance reports. Examine database queries to identify inefficient queries. Analyze memory usage, view memory allocations and peak usage.

Pain points and solutions in Java framework performance optimization Pain points and solutions in Java framework performance optimization Jun 03, 2024 pm 04:07 PM

Pain points and solutions in Java framework optimization: Object creation overhead: Solution: Object pool (such as Apache CommonsPool) Database connection leak: Solution: Connection pool (such as Hibernate or C3P0) Memory leak: Solution: Weak references and garbage collection threads Deadlock: Solution: Deadlock detection tools (such as VisualVM or JConsole), preventive measures (such as lock hierarchy)

Analysis of common problems in PHP performance optimization Analysis of common problems in PHP performance optimization Jun 05, 2024 pm 05:10 PM

Improve PHP performance by enabling OPCache to cache compiled code. Use a caching framework such as Memcached to store frequently used data. Reduce database queries (e.g. by caching query results). Optimize code (e.g. use inline functions). Utilize performance analysis tools such as XHProf to identify performance bottlenecks.

See all articles