A database connection control method and device based on a dynamic threshold and a medium
By using dynamic threshold control and multi-level priority queues, the problems of inefficient resource utilization and insufficient core business connection protection in PostgreSQL databases under high concurrency scenarios are solved, achieving efficient resource management and business priority protection, and improving the stability and response speed of the database system.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- HIGHGO SOFTWARE
- Filing Date
- 2026-06-17
- Publication Date
- 2026-07-14
AI Technical Summary
In high-concurrency scenarios, the fixed connection threshold of PostgreSQL database cannot adapt to the system load, resulting in inefficient resource utilization, insufficient connection guarantee for core business, and the indiscriminate queuing mechanism cannot distinguish business priorities, thus affecting service quality.
A dynamic threshold control method is adopted to collect system load indicators in real time, calculate the dynamic active connection threshold through a weighted summation evaluation model, and put the connection requests into multi-level waiting sub-queues according to their priority, and allocate resources in priority order.
It enables dynamic adaptive control of the number of database connections, improves resource utilization, shortens the latency of core business operations, avoids memory overflow and process crashes, and improves the availability and reliability of the database system.
Smart Images

Figure CN122388024A_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of database connection technology, and in particular to a database connection control method, device and medium based on dynamic thresholds. Background Technology
[0002] Modern information systems widely use PostgreSQL databases for data storage and business processing. Therefore, the number of database connection requests increases dramatically in high-concurrency scenarios, and each connection consumes system resources such as server memory and file descriptors. Without effective management of concurrent connections, problems such as server memory overflow, process crashes, and surges in response latency can easily occur, severely impacting the stability and availability of the database system.
[0003] Current mainstream database connection control schemes employ a fixed maximum connection threshold combined with a first-in-first-out (FIFO) single waiting queue to manage connections. The database server presets a global fixed maximum active connection limit. When a new connection request arrives, if the number of active connections has already reached the threshold, the request is added to a single waiting queue. Once existing connections release resources, connections are awakened from the queue in a FIFO order.
[0004] This solution has significant technical flaws. On the one hand, the fixed threshold cannot adapt to real-time changes in server load. Limiting the number of connections under low load leads to resource waste, while the threshold cannot effectively protect against system overload under high load. On the other hand, the indiscriminate queuing mechanism does not differentiate between the priorities of business requests. Core business connections are easily blocked by ordinary requests, which cannot guarantee the service quality and response time of critical businesses and makes it difficult to meet the business needs of high concurrency and differentiated services. Summary of the Invention
[0005] This invention provides a database connection control method, device, and medium based on dynamic thresholds to solve the following technical problems: In high-concurrency scenarios, PostgreSQL databases cannot adapt to system load with a fixed connection threshold, and indiscriminate queuing cannot distinguish business priorities, resulting in inefficient resource utilization and insufficient core business connection guarantees.
[0006] The embodiments of the present invention adopt the following technical solutions: On one hand, embodiments of the present invention provide a database connection control method based on dynamic thresholds, the method comprising: real-time acquisition of system load index values of the database server, and determination of the current dynamic active connection number threshold based on the system load index values; New database connection requests are prioritized according to preset rules. If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then the database connection request is placed into the corresponding waiting sub-queue according to its priority. When an active connection releases resources, the waiting sub-queues are scanned according to priority and resources are allocated.
[0007] In one feasible implementation, the system load metric values of the database server are collected in real time, specifically including: The system load metrics of the database server are periodically collected through the data acquisition interface; the system load metrics include at least: average CPU utilization, physical memory utilization, and average disk I / O wait time.
[0008] In one feasible implementation, determining the current dynamic active connection threshold based on the system load metric value specifically includes: The system load index values are input into a pre-constructed weighted summation evaluation model; the weighted summation evaluation model assigns a corresponding weight coefficient to each system load index; The dynamic active connection threshold H is calculated according to the formula: H=T×(1-(N1×W1+N2×W2+N3×W3)); where T is the baseline connection number, that is, the maximum number of connections in the system under ideal idle state; N1 and W1 are the average utilization rate of the central processing unit and its weight coefficient, respectively; N2 and W2 are the physical memory utilization rate and its weight coefficient, respectively; and N3 and W3 are the average disk I / O wait time and its weight coefficient, respectively.
[0009] In one feasible implementation, the newly connected database connection requests are prioritized according to preset rules, specifically including: When a new database connection request is detected, the context information carried by the database connection request is analyzed, and a priority is determined according to the judgment rules preset by the administrator. The determination rules include: prioritizing users based on their identity level, prioritizing users based on the importance of the client's source address, and prioritizing users based on the type of business identifier.
[0010] In one feasible implementation, if the real-time active connection count of the database server has reached the dynamic active connection count threshold, the database connection requests are placed into the corresponding waiting sub-queue according to their priority, specifically including: If the real-time active connection count of the database server does not reach the dynamic active connection count threshold, the database connection request will be directly allocated to an idle connection resource. If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then according to the priority number of the database connection request, a corresponding waiting sub-queue is matched; the database connection request is placed into the matched waiting sub-queue and begins to wait to be scheduled.
[0011] In one feasible implementation, when an active connection releases resources, the waiting sub-queues are scanned according to priority and resources are allocated, specifically including: Whenever an active connection completes an SQL query or transaction and is ready to release its resources, the connection scheduler is invoked by the child process to which the active connection belongs before releasing its resources. The queue scanning process is initiated by the connection scheduler, and a database connection request is taken from the waiting sub-queue in descending order of priority and allocated to the active connection resource that has just been released.
[0012] In one feasible implementation, a queue scanning process is initiated by a connection scheduler, retrieving a database connection request from the waiting sub-queue in descending priority order and allocating it to the recently released active connection resource. Specifically, this includes: After starting the connection scheduler, notify the global counter to decrement the current number of active connections by one; The connection scheduler initiates a queue scanning process, first checking if the highest priority waiting sub-queue is empty. If it is not empty, the database connection request at the head of the waiting sub-queue is retrieved and allocated to the recently released active connection resource. If it is empty, then move to the next priority waiting subqueue and check if it is empty; and so on, until the first non-empty queue is found and the database connection request at the head of the queue is taken and allocated to the just released active connection resource.
[0013] In one feasible implementation, the method further includes: If no database connection request is found after traversing all waiting sub-queues, it is confirmed that all queues are empty. At this time, the connection scheduler notifies the global counter to increment the current active connection count and completely release the active connection resource.
[0014] On the other hand, embodiments of the present invention also provide a database connection control device based on dynamic thresholds, the device comprising: At least one processor; and, A memory communicatively connected to the at least one processor; wherein, The memory stores instructions that can be executed by the at least one processor to enable the at least one processor to execute the database connection control method based on dynamic thresholds.
[0015] Finally, this embodiment of the invention also provides a storage medium, which is a non-volatile computer-readable storage medium storing at least one program, each program including instructions, which, when executed by a terminal, cause the terminal to execute the aforementioned database connection control method based on dynamic thresholds.
[0016] Compared with the prior art, the database connection control method, device and medium based on dynamic threshold provided in this embodiment of the invention have the following beneficial effects: This invention intelligently adjusts the maximum number of active connections to the database server based on real-time load factors such as CPU utilization, memory usage, and disk I / O latency. It increases the connection capacity under low load and reduces the threshold protection system under high load, thereby fully improving the server's resource utilization and achieving dynamic adaptive control of the connection threshold.
[0017] A multi-level priority queue was also constructed to classify and isolate connection requests according to user identity, client IP, and business identifier, preventing low-priority requests from blocking core business connections and ensuring that high-priority requests are scheduled first. A strict priority-based preemptive scheduling mechanism is employed, waking up the highest-priority connections first when resources are released, significantly reducing connection waiting latency for core businesses and improving the response speed of critical services. This effectively avoids memory overflows, process crashes, and other failures caused by uncontrolled connection numbers, improving the overall availability and reliability of the database. Attached Figure Description
[0018] To more clearly illustrate the technical solutions in the embodiments of the present invention or the prior art, the drawings used in the description of the embodiments or the prior art will be briefly introduced below. Obviously, the drawings described below are only some embodiments recorded in the present invention. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort. In the drawings: Figure 1 A flowchart of a database connection control method based on dynamic thresholds provided in an embodiment of the present invention; Figure 2 A flowchart illustrating a specific implementation of a database connection control method based on dynamic thresholds, provided in an embodiment of the present invention; Figure 3 This is a schematic diagram of a database connection control device based on dynamic thresholds, provided as an embodiment of the present invention. Detailed Implementation
[0019] To enable those skilled in the art to better understand the technical solutions of this invention, the technical solutions of the embodiments of this invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this invention, and not all embodiments. Based on the embodiments of this specification, all other embodiments obtained by those skilled in the art without creative effort should fall within the scope of protection of this invention.
[0020] This invention provides a database connection control method based on dynamic thresholds, such as... Figure 1 As shown, the database connection control method based on dynamic thresholds specifically includes steps S101-S104: S101. Collect the system load index value of the database server in real time, and determine the current dynamic active connection threshold based on the system load index value.
[0021] Specifically, the system load metrics of the database server are periodically collected through the data acquisition interface; the system load metrics include at least: average CPU utilization, physical memory utilization, and average disk I / O wait time.
[0022] Furthermore, the system load index values are input into a pre-built weighted summation evaluation model; the weighted summation evaluation model assigns a corresponding weight coefficient to each system load index; The dynamic active connection threshold H is calculated using the formula: H=T×(1-(N1×W1+N2×W2+N3×W3)). Where T is the baseline connection number, i.e., the maximum number of connections in the system under ideal idle conditions; N1 and W1 are the average utilization rate of the central processing unit and its weight coefficient, respectively; N2 and W2 are the physical memory utilization rate and its weight coefficient, respectively; and N3 and W3 are the average disk I / O latency and its weight coefficient, respectively.
[0023] As a feasible implementation method, Figure 2 A flowchart illustrating a specific implementation of a database connection control method based on dynamic thresholds provided in this invention is shown below. Figure 2 As shown, the present invention first provides a dynamic threshold calculator, whose core function is to transform the abstract system load state into a specific, executable upper limit for the number of connections.
[0024] The specific calculation process includes: firstly, periodically collecting the following key performance indicators through interfaces provided by the operating system, such as / proc / stat and / proc / meminfo: 1. Average CPU utilization: Reflects the level of activity of computing resources.
[0025] 2. Physical memory utilization: Reflects the degree of scarcity of memory resources.
[0026] 3. Average disk input / output (I / O) latency: reflects the response delay of the storage subsystem.
[0027] The collected data metrics are fed into a pre-defined weighted summation evaluation model. This model assigns a weight coefficient to each metric, for example, CPU weight 0.5, memory weight 0.3, and disk I / O weight 0.2. The dynamic active connection threshold is calculated using the formula: Dynamic Active Connection Threshold = Baseline Connections × (1 - (CPU Utilization × W1 + Memory Utilization × W2 + Normalized Disk I / O Wait Time × W3)). Here, the baseline connections represent the system's maximum processing capacity under ideal idle conditions. Using this model, the higher the system load, the lower the calculated dynamic threshold, and vice versa. This allows the connection control strategy to be perfectly synchronized with the server's actual processing capacity.
[0028] S102. Prioritize newly connected database connection requests according to preset rules.
[0029] Specifically, when a new database connection request is detected, the context information carried in the request is analyzed, and a priority determination is made according to the administrator's preset judgment rules. These rules include: prioritizing based on user identity, prioritizing based on the importance of the client's source address, and prioritizing based on the type of business identifier.
[0030] As a feasible implementation method, this invention also provides a multi-level priority queue, which accurately classifies connections according to their business importance before they enter a waiting state, laying the foundation for subsequent scheduling. The multi-priority queue consists of N+1 independent first-in-first-out (FIFO) sub-queues operating in parallel. Figure 2 As shown, these sub-queues are numbered sequentially from highest to lowest priority, such as level 0 (highest priority), level 1 (normal priority), ... level N (lowest priority).
[0031] When a new connection request arrives, the system immediately analyzes the context information it carries and determines its priority based on the rules preset by the administrator. The determination criteria include: 1. User identity: For example, connections from a database administrator (DBA) account automatically receive the highest priority, level 0.
[0032] 2. Client origin: For example, IP addresses from the company's core business network segment (such as 192.168.10.0 / 24) are assigned a high priority of level 1.
[0033] 3. Business identifier: For example, a request containing app=payment in the connection string is considered a payment business and also receives high priority.
[0034] S103. If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then the database connection requests are placed into the corresponding waiting sub-queue according to their priority.
[0035] Specifically, if the real-time active connection count of the database server does not reach the dynamic active connection count threshold, the database connection request will be directly allocated to the idle connection resource.
[0036] If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then the corresponding waiting sub-queue is matched according to the priority number of the database connection request; the database connection request is placed into the matched waiting sub-queue and begins to wait to be scheduled.
[0037] As a feasible implementation, after determining the priority of a database connection request, the request is precisely placed at the end of the corresponding numbered sub-queue, awaiting scheduling. This design ensures that requests of different importance are physically isolated, preventing low-priority requests from interrupting the queue and impacting critical business operations.
[0038] S104. When an active connection releases resources, scan each waiting sub-queue according to priority and allocate resources accordingly.
[0039] Specifically, whenever an active connection completes an SQL query or transaction and is ready to release its active connection resources, the connection scheduler is invoked by the child process to which the active connection belongs before releasing the active connection resources.
[0040] Furthermore, the queue scanning process is initiated through the connection scheduler, retrieving a database connection request from the waiting sub-queue in descending priority order and allocating it to the recently released active connection resource. Specifically, this includes: After starting the connection scheduler, the global counter is notified to decrement the current number of active connections. The connection scheduler then initiates a queue scanning process, first checking if the highest priority waiting sub-queue is empty. If it is not empty, the database connection request at the head of the waiting sub-queue is retrieved and allocated to the recently released active connection resource. If it is empty, the process moves to the next priority waiting sub-queue and checks if it is empty. This continues until the first non-empty queue is found, and the database connection request at the head of the queue is retrieved and allocated to the recently released active connection resource.
[0041] If no database connection request is found after traversing all waiting sub-queues, it is confirmed that all queues are empty. At this time, the connection scheduler notifies the global counter to increment the current active connection count and completely releases the active connection resource.
[0042] As a possible implementation method, such as Figure 2 As shown, this invention also provides a connection scheduler, integrated as an embedded module within the subprocess handling each database connection. Its responsibility is to allocate resources to the next most suitable waiter the moment they are released.
[0043] Whenever an active connection completes its SQL query or transaction and is ready to close, its child process calls the connection scheduler before exiting. The scheduler first notifies the global counter to decrement the current number of active connections, and then initiates a top-down scanning process. It first checks if the level 0 (highest priority) queue is empty. If it is not empty, it immediately retrieves the connection request at the head of the queue, allocates processing resources to it, and makes it an active connection. If the level 0 queue is empty, the scheduler does not pause but immediately moves on to check the level 1 queue, and so on, until it finds the first non-empty queue and retrieves a connection from it, or confirms that all queues are empty.
[0044] This strict priority preemptive scheduling strategy fundamentally ensures that high-priority connection requests can obtain system resources with minimal latency, ensuring the smooth operation of core business even under extremely high system load.
[0045] In one embodiment, the overall workflow of the present invention is as follows: When a client initiates a database connection request, the system first authenticates the request. Based on preset rules, such as user identity, client IP address, and business identifier, the system determines the importance of the request and assigns it a priority label: high priority, normal priority, or low priority. After classification, connection requests are precisely placed at the tail of the corresponding priority's first-in-first-out queue. High-priority requests go to the high-priority queue, normal requests go to the normal queue, and low-priority requests go to the low-priority queue, achieving physical isolation between requests of different importance.
[0046] Meanwhile, the dynamic threshold calculator continuously monitors the server's real-time health status, periodically collecting key indicators such as CPU utilization, memory utilization, and disk I / O wait time. The collected data is fed into a weighted summation evaluation model, which calculates the dynamic threshold for the maximum number of active connections the system can safely handle. The higher the system load, the lower the dynamic threshold; the lower the load, the higher the threshold. When an active connection completes its task and releases resources, the connection scheduler is triggered. The scheduler scans downwards from the highest priority queue, finds the first non-empty queue, retrieves the connection request at the head of that queue, and determines whether to allocate processing resources for it based on the current dynamic threshold. If the current number of active connections has not reached the threshold, the request is converted into an active connection, and SQL queries or transaction processing begins. After the active connection completes processing and releases resources, the connection scheduler is triggered again, repeating the scheduling process in step four.
[0047] In addition, embodiments of the present invention also provide a database connection control device based on dynamic thresholds, such as... Figure 3 As shown, the database connection control device based on dynamic thresholds specifically includes: At least one processor; and a memory communicatively connected to the at least one processor; wherein, The memory stores instructions that can be executed by at least one processor, so that at least one processor can perform the following: The system load index value of the database server is collected in real time, and the current dynamic active connection threshold is determined based on the system load index value. New database connection requests are prioritized according to preset rules. If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then the database connection request is placed into the corresponding waiting sub-queue according to its priority. When an active connection releases resources, the waiting sub-queues are scanned according to priority and resources are allocated.
[0048] Finally, this embodiment of the invention also provides a storage medium, which is a non-volatile computer-readable storage medium storing at least one program, each program including instructions that, when executed by a terminal, cause the terminal to perform: The system load index value of the database server is collected in real time, and the current dynamic active connection threshold is determined based on the system load index value. New database connection requests are prioritized according to preset rules. If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then the database connection request is placed into the corresponding waiting sub-queue according to its priority. When an active connection releases resources, the waiting sub-queues are scanned according to priority and resources are allocated.
[0049] The core of this invention lies in providing an intelligent database connection control system, designed to solve the problem of system crashes or slow responses caused by uncontrolled connection numbers in traditional databases under high-concurrency scenarios. This system does not simply limit a fixed connection cap, but rather constructs a dynamic closed-loop control mechanism capable of sensing system load, identifying connection priorities, and intelligently scheduling resources.
[0050] The entire system consists of three closely cooperating core components: a dynamic threshold calculator, a multi-level priority queue, and a connection scheduler. Its workflow is as follows: Request entry point: When the database master process receives a connection request from a client, the control flow officially begins.
[0051] Priority classification: The system first authenticates the new request, assigns it a priority label according to preset rules, and puts it into the corresponding waiting queue.
[0052] Dynamic decision-making: At the same time, the dynamic threshold calculator continuously monitors the real-time health status of the server and calculates the maximum number of active connections that the current system can safely support, i.e., the dynamic threshold.
[0053] Intelligent scheduling: Whenever an active connection completes its task and releases resources, the connection scheduler is immediately triggered. It scans each waiting queue strictly in descending order of priority, waking up the highest priority waiting connections and putting them into processing.
[0054] Through the above process, the present invention can ensure that system resources are always used by the most needed and important tasks, thereby maximizing the utilization of server performance while ensuring the stable operation of core business.
[0055] The various embodiments in this invention are described in a progressive manner. Similar or identical parts between embodiments can be referred to mutually. Each embodiment focuses on describing the differences from other embodiments. In particular, the embodiments of apparatus, devices, and non-volatile computer storage media are basically similar to the method embodiments, so the descriptions are relatively simple; relevant parts can be referred to the descriptions of the method embodiments.
[0056] The foregoing has described specific embodiments of the present invention. Furthermore, the processes depicted in the drawings do not necessarily require a specific or sequential order to achieve the desired results. In some embodiments, multitasking and parallel processing are possible or may be advantageous.
[0057] The above description is merely an embodiment of the present invention and is not intended to limit the present invention. For those skilled in the art, various modifications and variations can be made to the embodiments of the present invention. Any modifications, equivalent substitutions, improvements, etc., made within the spirit and principle of the embodiments of the present invention should be included within the protection scope of the present invention.
Claims
1. A database connection control method based on dynamic thresholds, characterized in that, The method includes: The system load metric values of the database server are collected in real time, and the current dynamic active connection threshold is determined based on the system load metric values. Prioritize newly connected database connection requests according to preset rules; If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then the database connection request is placed into the corresponding waiting sub-queue according to its priority. When an active connection releases resources, the waiting sub-queues are scanned according to priority and resources are allocated.
2. The database connection control method based on dynamic thresholds according to claim 1, characterized in that, Real-time collection of system load metrics from the database server, specifically including: The system load metrics of the database server are periodically collected through the data acquisition interface; the system load metrics include at least: average CPU utilization, physical memory utilization, and average disk I / O wait time.
3. The database connection control method based on dynamic thresholds according to claim 2, characterized in that, The current dynamic active connection threshold is determined based on the system load metric value, specifically including: The system load index values are input into a pre-constructed weighted summation evaluation model; the weighted summation evaluation model assigns a corresponding weight coefficient to each system load index; The dynamic active connection threshold H is calculated according to the formula: H=T×(1-(N1×W1+N2×W2+N3×W3)); where T is the baseline connection number, that is, the maximum number of connections in the system under ideal idle state; N1 and W1 are the average utilization rate of the central processing unit and its weight coefficient, respectively; N2 and W2 are the physical memory utilization rate and its weight coefficient, respectively; and N3 and W3 are the average disk I / O wait time and its weight coefficient, respectively.
4. The database connection control method based on dynamic thresholds according to claim 1, characterized in that, New database connection requests are prioritized according to preset rules, specifically including: When a new database connection request is detected, the context information carried by the database connection request is analyzed, and a priority is determined according to the judgment rules preset by the administrator. The determination rules include: prioritizing users based on their identity level, prioritizing users based on the importance of the client's source address, and prioritizing users based on the type of business identifier.
5. The database connection control method based on dynamic thresholds according to claim 1, characterized in that, If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then the database connection requests are placed into the corresponding waiting sub-queue according to their priority, specifically including: If the real-time active connection count of the database server does not reach the dynamic active connection count threshold, the database connection request will be directly allocated to an idle connection resource. If the real-time active connection count of the database server has reached the dynamic active connection count threshold, then according to the priority number of the database connection request, a corresponding waiting sub-queue is matched; the database connection request is placed into the matched waiting sub-queue and begins to wait to be scheduled.
6. The database connection control method based on dynamic thresholds according to claim 1, characterized in that, When an active connection releases resources, the waiting sub-queues are scanned according to priority and resources are allocated accordingly. Specifically, this includes: Whenever an active connection completes an SQL query or transaction and is ready to release its resources, the connection scheduler is invoked by the child process to which the active connection belongs before releasing its resources. The queue scanning process is initiated by the connection scheduler, and a database connection request is taken from the waiting sub-queue in descending order of priority and allocated to the active connection resource that has just been released.
7. The database connection control method based on dynamic thresholds according to claim 6, characterized in that, The queue scanning process is initiated through the connection scheduler. A database connection request is retrieved from the waiting sub-queue in descending priority order and allocated to the recently released active connection resource. Specifically, this includes: After starting the connection scheduler, notify the global counter to decrement the current number of active connections by one; The connection scheduler initiates a queue scanning process, first checking if the highest priority waiting sub-queue is empty. If it is not empty, the database connection request at the head of the waiting sub-queue is retrieved and allocated to the recently released active connection resource. If it is empty, then move to the next priority waiting subqueue and check if it is empty; and so on, until the first non-empty queue is found and the database connection request at the head of the queue is taken and allocated to the just released active connection resource.
8. The database connection control method based on dynamic thresholds according to claim 7, characterized in that, The method further includes: If no database connection request is found after traversing all waiting sub-queues, it is confirmed that all queues are empty. At this time, the connection scheduler notifies the global counter to increment the current active connection count and completely release the active connection resource.
9. A database connection control device based on dynamic thresholds, characterized in that, The device includes: At least one processor; and, A memory communicatively connected to the at least one processor; wherein, The memory stores instructions executable by the at least one processor to enable the at least one processor to perform a database connection control method based on a dynamic threshold according to any one of claims 1-8.
10. A storage medium, characterized in that, The storage medium is a non-volatile computer-readable storage medium that stores at least one program, each program including instructions that, when executed by a terminal, cause the terminal to perform a database connection control method based on a dynamic threshold according to any one of claims 1-8.