IP Library Granted Patent US 7,434,204
Granted Patent B1
US 7,434,204 · App. 10/886,333 · Granted Oct 7, 2008

Method and apparatus for managing software processes

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,434,204
App. No.
10/886,333
Granted
Oct 7, 2008
Kind
B1
Abstract

A method and apparatus for managing software processes to improve their stability. Each instance of a software process periodically reports its operating status to a recycler. The status information identifies how long the instance has been continuously executing and how many transactions the instance has executed during that time. If either value exceeds a threshold associated with the process or that specific instance of the process, the instance is instructed to recycle. If instructed to recycle, the instance may stop accepting new transactions, finish handling its current transactions, then restart and resume normal operation. The recycler may postpone or cancel a recycle instruction if the combined capacity of all active instances of the process is below, or may fall below, a minimum desired capacity for the process. The recycler may also recycle itself.

Claims (104)

1. An automated method of managing a software process, comprising:

registering a first process when said first process begins executing;

maintaining a set of rules for the first process, wherein said set of rules indicate when to recycle the first process, and wherein said set of rules identify one or more of a threshold length of time and a threshold number of transactions;

periodically receiving operating statistics from the first process, said operating statistics comprising:

a time indicator configured to indicate a length of time the first process has been continuously executing; and

a transaction indicator configured to indicate a number of transactions handled by the first process during said length of time;

comparing said length of time to a threshold length of time associated with the first process;

comparing said number of transactions to a threshold number of transactions associated with the first process;

comparing a minimum desired capacity of a set of software processes that includes the first process to a current capacity of the set of software processes minus a first capacity of the first process; and

instructing the first process to recycle if said current capacity minus said first capacity is not less than said minimum desired capacity and:

said length of time exceeds a threshold length of time associated with the first process; or

said number of transactions exceeds a threshold number of transactions associated with the first process.

2. The method of claim 1 , further comprising:

maintaining a set of rules for the set of software processes;

wherein said rules indicate when to recycle the processes; and

wherein said rules identify one or more of: said threshold length of time, said threshold number of transactions and said minimum desired capacity.

3. The method of claim 1 , wherein said operating statistics include a current load of the first process.

4. The method of claim 1 , wherein said operating statistics include a capacity utilization of the first process.

5. The method of claim 1 , wherein the first process, in response to said instructing:

ceases accepting new transactions; and

restarts after completing handling current transactions.

6. The method of claim 1 , further comprising, after said instructing:

setting a capacity of the first process to zero; and

if the current capacity of the set of software processes falls below said minimum desired capacity, instructing the first process to cancel said recycling.

7. The method of claim 1 , wherein said periodically receiving comprises:

polling the first process; and

receiving said operating statistics in response to said polling.

8. The method of claim 1 , wherein said registering comprises:

receiving from the first process an identity of the first process.

9. The method of claim 8 , wherein said identity comprises one or more of: a name of the first process, a network address of the first process, a name of a computing device on which the first process is executing, and a network address of the computing device.

10. The method of claim 1 , wherein said registering comprises:

receiving from the first process a capacity of the first process.

11. The method of claim 1 , wherein said registering comprises:

receiving from the first process a time at which the first process was started.

12. The method of claim 1 , wherein said registering comprises:

receiving from the first process a number of transactions handled by the first process since the first process was started.

13. The method of claim 1 , wherein said registering comprises:

receiving from the first process a type of the first process.

14. The method of claim 13 , wherein said type is call management server.

15. The method of claim 13 , wherein said type is interactive voice response server.

16. The method of claim 13 , wherein said type is media server.

17. The method of claim 13 , wherein said type is web server.

18. The method of claim 13 , wherein said type is recycler.

19. A computer readable medium storing instructions that, when executed by a computer, cause the computer to perform a method of managing a software process, the method comprising:

registering a first process when said first process begins executing;

maintaining a set of rules for the first process wherein said set of rules indicate when to recycle the first process, and wherein said set of rules identify one or more of a threshold length of time and a threshold number of transactions;

periodically receiving operating statistics from the first process, said operating statistics comprising:

a time indicator configured to indicate a length of time the first process has been continuously executing; and

a transaction indicator configured to indicate a number of transactions handled by the first process during said length of time;

comparing said length of time to a threshold length of time associated with the first process;

comparing said number of transactions to a threshold number of transactions associated with the first process;

comparing a minimum desired capacity of a set of software processes that includes the first process to a current capacity of the set of software processes minus a first capacity of the first process; and

instructing the first process to recycle if said current capacity minus said first capacity is not less than said minimum desired capacity and:

said length of time exceeds a threshold length of time associated with the first process; or

said number of transactions exceeds a threshold number of transactions associated with the first process.

20. An automated method of managing software processes, comprising:

for each of multiple software processes, identifying multiple instances of each software process executing on a plurality of computing devices;

applying a first set of rules associated with a first software process to determine when to recycle a first instance, wherein said first set of rules identify one or more of a threshold length of time and a threshold number of transactions and wherein the first instance is an instance of the first software process;

periodically receiving from each instance of each software process one or more of:

an indicator of a length of time the instance has been continuously executing; or

a number of transactions handled by the instance during said length of time;

determining whether a length of time an instance has been continuously executing exceeds a threshold length of time associated with the instance;

determining whether a number of transactions handled by an instance exceeds a threshold number of transactions associated with the instance;

determining whether a processing capacity of the multiple instances of the first software process that include the first instance may fall below a minimum desired capacity if the first instance is recycled; and

instructing the first instance of the first software process to recycle if:

said length of time the first instance has been continuously executing exceeds said threshold length of time; or

said number of transactions handled by the first instance during said length of time exceeds said threshold number of transactions.

21. The method of claim 20 , wherein said recycling comprises:

continuing to handle a set of current transactions currently being handled by the first instance;

accepting no additional transactions until the first instance is restarted; and

restarting the first instance after the current transactions are completed.

22. The method of claim 20 , further comprising:

applying a second set of rules associated with the first instance of the first software process;

wherein said second set of rules overrides said first set of rules.

23. A computer readable medium storing instructions that, when executed by a computer, cause the computer to perform a method of managing software processes, the method comprising:

for each of multiple software processes, identifying multiple instances of each software process executing on a plurality of computing devices;

applying a first set of rules associated with a first software process to determine when to recycle a first instance, wherein said first set of rules identify one or more of a threshold length of time and a threshold number of transactions, and wherein the first instance is an instance of the first software process;

periodically receiving from each instance of each software process one or more of:

an indicator of a length of time the instance has been continuously executing; or

a number of transactions handled by the instance during said length of time;

determining whether a length of time an instance has been continuously executing exceeds a threshold length of time associated with the instance;

determining whether a number of transactions handled by an instance exceeds a threshold number of transactions associated with the instance;

determining whether a processing capacity of the multiple instances of the first software process that include the first instance may fall below a minimum desired capacity if the first instance is recycled; and

instructing the first instance of the first software process to recycle if:

said length of time the first instance has been continuously executing exceeds said threshold length of time; or

said number of transactions handled by the first instance during said length of time exceeds said threshold number of transactions.

24. An apparatus for managing a set of software processes, comprising:

a processor; and

a memory configured to store:

a set of rules configured to indicate when an instance of a software process should be recycled, said set of rules including:

a threshold period of time, wherein an instance of the software process may be instructed to recycle after executing continuously for a length of time exceeding said threshold period of time;

a threshold number of transactions, wherein an instance of the software process may be instructed to recycle after handling said threshold number of transactions; and

a minimum desired capacity for the software process;

a communication module configured to periodically receive, from each executing instance of the software process:

a length of time the instance of the software process has been continuously executing; and

a number of transactions handled by the instance of the software process during said length of time;

an interface configured to indicate when an instance of the software process should be recycled; and

a recycler configured to instruct a first instance of the software process to recycle if:

the first instance of the software process has been executing continuously for a period of time exceeding said threshold period of time; or

the first instance of the software process has handled a number of transactions greater than said threshold number of transactions without restarting,

wherein said recycler only instructs the first instance of the software process to recycle if the combined capacity of all other executing instances of the software process is not less than said minimum desired capacity.

25. The apparatus of claim 24 , wherein said interface provides human-comprehendible statuses of the instances of the software process.

26. The apparatus of claim 24 , wherein said recycler is configured to recycle itself.

27. The apparatus of claim 24 , wherein said recycler is further configured to instruct the first instance of the software process to cancel said recycling if said combined capacity falls below said minimum desired capacity.

Assignments (11)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2025
From: SL MIDCO 2, LLC; SL MIDCO 1, LLC; LO PLATFORM MIDCO, INC.; SERENOVA, LLC; LIFESIZE, INC.; TELESTRAT LLC; LIGHT BLUE OPTICS INC.; SERENOVA WFM, INC.
To: ENGHOUSE INTERACTIVE INC.
Reel/Frame 070932/0415 →
SECURITY INTEREST Recorded Mar 16, 2020
From: SERENOVA, LLC
To: WESTRIVER INNOVATION LENDING FUND VIII, L.P.
Reel/Frame 052126/0423 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 43855/0947 Recorded Mar 3, 2020
From: GOLDMAN SACHS SPECIALTY LENDING GROUP, L.P., AS COLLATERAL AGENT
To: SERENOVA, LLC, FORMERLY KNOWN AS LIVEOPS CLOUD PLATFORM, LLC; LO PLATFORM MIDCO, INC.; TELSTRAT LLC
Reel/Frame 052079/0941 →
SECURITY INTEREST Recorded Mar 2, 2020
From: SERENOVA, LLC; LIFESIZE, INC.; LO PLATFORM MIDCO, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 052066/0126 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2017
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: LO PLATFORM MIDCO, INC.; SERENOVA, LLC
Reel/Frame 044030/0105 →
SECURITY INTEREST Recorded Oct 13, 2017
From: SERENOVA, LLC, FORMERLY KNOWN AS LIVEOPS CLOUD PLATFORM, LLC; LO PLATFORM MIDCO, INC.; TELSTRAT LLC
To: GOLDMAN SACHS SPECIALTY LENDING GROUP, L.P., AS COLLATERAL AGENT
Reel/Frame 043855/0947 →
CHANGE OF NAME Recorded Mar 20, 2017
From: LIVEOPS CLOUD PLATFORM, LLC.
To: SERENOVA, LLC.
Reel/Frame 041653/0292 →
PATENT SECURITY AGREEMENT Recorded Dec 24, 2015
From: LO PLATFORM MIDCO, INC.; LIVEOPS CLOUD PLATFORM, LLC
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 037372/0063 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 3, 2015
From: LIVEOPS, INC.
To: LIVEOPS CLOUD PLATFORM, LLC
Reel/Frame 036946/0577 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 2ND CONVEYING PARTY NAME ON THE RECORDATION SHEET IS MISSPELLED PREVIOUSLY RECORDED ON REEL 015558 FRAME 0709. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Oct 29, 2015
From: EVERINGHAM, JAMES; HOUCK, CHRISTOPHER
To: LIVEOPS, INC.
Reel/Frame 036991/0252 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2004
From: EVERINGHAM, JAMES; HOUK, CHRISTOPHER
To: LIVEOPS, INC.
Reel/Frame 015558/0709 →