Misi, I know that you know AR System internals very well, and so normally, I would never question you. So consider this response with that in mind, as well as the disclaimer that this is the last thing I was taught on the topic - if the architecture of the internals has changed, I must have missed that memo.
The purpose behind Fast and List threads was to separate single-API functions (Submits, mostly) from multiple-API functions (pretty much everything else). The thought, from what I can infer, was to have an express line of sorts so that quick DB transactions wouldn't have to wait in line behind long search/retrieve tasks. If, as you infer, Fast/List threads no longer have any relevance in terms of different function, why do they still exist as separately tunable parameters? Rick On Mon, Jan 18, 2010 at 5:06 AM, Misi Mladoniczky <[email protected]> wrote: > Hi, > > I do not think that updates from Web Services use the list threads. It > would be the same thing as the Save-button in a Modify-form. > > It performs a ARSetEntry()-call through a Fast-thread. It is performed by > the Mid-Tier-server just as any other client. > > The Fast- and List-threads are just a blunt way to group and route various > calls. > > If we exclude the admin-tool/developer-studio calls, I think that any call > with "list" in it's name access the List-servers and any call without > "list" in its name go to a Fast-server. > > There is no technical difference between Fast and List threads. They > perform in the same way. > > As a Fast-call can be very slow, and List-calls very quick, I would argue > that differentiating between these types of calls are not that useful. > > The calls to the fast an list threads typically comes in pairs anyway: > > An ACTL-Set-Fields performs two calls. One ARGetListEntry() to the > List-thread, and one ARGetEntry() to the Fast-thread. An ACTL-Push-Fields > performs a ARGetListEntry() and an ARCreateEntry()/ARSetEntry() call. > > In the old days, I think that the List-threads and Fast-threads had > another distinction. When a user logged in, he was "assigned" to a > Fast-thread but accessed the List-thread in a more random way. The idea > was to minimize the calls to the transaction-daemon and portmapper to find > the tcp-port of the fast-threads each time they were called. Now > everything goes to a single tcp-port. > > When we got the FLTR-Push-Fields calls, the ARCreateEntry() and > ARSetEntry() calls stopped being very fast. WebServices adds even more to > this problem. > > In most cases, it is possible to rewrite workflow to be much faster. In > some cases, especially with the bigger apps such as ITSM, it is more > difficult. And you do not want to customize ITSM anyway... > > Best Regards - Misi, RRR AB, http://www.rrr.se > > Products from RRR Scandinavia: > * RRR|License - Not enough Remedy licenses? Save money by optimizing. > * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. > Find these products, and many free tools and utilities, at http://rrr.se. > > > As an aside, technically your submits are going through the Fast > > (single-API) threads, while your updates from Web Services would use the > > List (multiple-API) threads. That's if your submit is allowed to finish > > and > > then the ensuing record is updated by the WS. If the WS return values > are > > part of the Submit process, then you have long transactions processing > > through and clogging up your Fast threads, which is not what they are > > intended to handle. That will be the case regardless of the source of > the > > external data retrieval process or source, though the time they take may > > be > > affected by using DB vs. WS. > > > > Rick > > > > On Fri, Jan 15, 2010 at 3:35 PM, Jason Miller > > <[email protected]>wrote: > > > >> ** Just to make sure that I understand, the requesting system is waiting > >> 40 > >> seconds for the quote to be returned? Does the quote return need to > >> done as > >> soon as possible or can there be a minute or two before the return? > >> > >> Maybe have them only submit the record and not trigger the processing > >> workflow. Then have an escalation that will process the new record(s) > >> and > >> then make a call to a web service on requester's end that is designed to > >> accept the return from a previous transaction. It would take some > >> redesigning on both sides but would alleviate the waiting and hanging on > >> to > >> threads/connections. > >> > >> The other thing might be to offload some of the Remedy processing (if > >> there > >> is a lot) to more efficient scripts and/or direct database actions. Web > >> services can be a wonderful thing but not always the fastest. > >> > >> Jason > >> > >> > >> On Fri, Jan 15, 2010 at 3:02 PM, LJ Longwing > >> <[email protected]>wrote: > >> > >>> ** > >>> LOL.....consider this Rick....Consider a 'submit' to be an interface > >>> that > >>> allows ALL attributes needed to completely configure a change with a > >>> single > >>> button press. This may be a bad example...if it is I'm sorry...I > >>> really > >>> don't do ITSM....but the submit in question on our system actually > >>> averages > >>> about 40 seconds. Makes no less than 4 calls to other external systems > >>> via > >>> web services and performs more calculations than I care to think about. > >>> That being what it is....what would you do in that situation? > >>> > >>> ------------------------------ > >>> *From:* Action Request System discussion list(ARSList) [mailto: > >>> [email protected]] *On Behalf Of *Rick Cook > >>> *Sent:* Friday, January 15, 2010 3:55 PM > >>> > >>> *To:* [email protected] > >>> *Subject:* Re: Fast/List Concurrent settings? > >>> > >>> ** If your submits are taking 10 seconds each, you have a significant > >>> problem, my friend! > >>> > >>> Rick > >>> > >>> On Fri, Jan 15, 2010 at 2:52 PM, LJ Longwing > >>> <[email protected]>wrote: > >>> > >>>> ** > >>>> I completely agree with everything you said....but as you mentioned, > >>>> if > >>>> you have 60 submits and have 10 threads...you are only handling 10 of > >>>> those > >>>> 60 concurrently....so if each transaction takes an average of say...10 > >>>> seconds...the first 10 will complete in 10, the next 10 in 20, and so > >>>> on > >>>> with the final set of 10 taking a full 60 seconds from time to > >>>> complete to > >>>> process. If your external application has a timeout of say....45 > >>>> seconds > >>>> then you are only going to be able to handle 40 of the 60 submitted > >>>> concurrently and as such would have a 1/3 failure rate....in that > >>>> situation > >>>> would you then set your threads to say....15 to make it so that you > >>>> could > >>>> handle 60 in 40 seconds or would you take it to 60 to be able to > >>>> handle 60 > >>>> in 10 seconds? > >>>> > >>>> ------------------------------ > >>>> *From:* Action Request System discussion list(ARSList) [mailto: > >>>> [email protected]] *On Behalf Of *Rick Cook > >>>> *Sent:* Friday, January 15, 2010 3:39 PM > >>>> *To:* [email protected] > >>>> *Subject:* Re: Fast/List Concurrent settings? > >>>> > >>>> ** I would think that one of the larger software-related issues that > >>>> would affect the number of concurrent Inserts would be the Index > >>>> structure. > >>>> I am sure you know this, but for the benefit of those who don't, > >>>> indexes are > >>>> meant to help us search on a form more easily. However, above a > >>>> certain > >>>> number (around 8 for a Remedy form), that cause performance > >>>> degradation when > >>>> creating a new record, because each of the indexes has to be updated > >>>> as part > >>>> of the creation process. If a system is seeing slow creates, that's > >>>> the > >>>> first thing I check. > >>>> > >>>> > >>>> One other thing to think about is that since each thread can cache 5 > >>>> processes (that's the last number I heard, anyway) in addition to the > >>>> one > >>>> currently being handled, you could, with 10 Fast (Single-API) threads, > >>>> handle 60 concurrent create processes without a transaction loss. > >>>> There > >>>> would probably be a bit of a delay for those farther back in the > >>>> queue, but > >>>> if you had a reasonably robust system, most users wouldn't notice it > >>>> much. > >>>> I seriously doubt all but a very few systems have to handle anything > >>>> resembling that kind of concurrent load, with the exception of those > >>>> who > >>>> have a large number of system (i.e. NMS) generated records. > >>>> > >>>> Also look at the Entry ID Block size when doing this test. If - AND > >>>> ONLY > >>>> IF - you are regularly having large numbers of concurrent inserts, you > >>>> can > >>>> set the Entry ID Block size to something like 10 to cut down the > >>>> number of > >>>> requests to the DB for Entry IDs. That is alleged to help with create > >>>> times, though I have not seen that be the case in practical use. > >>>> > >>>> Rick > >>>> > >>>> On Fri, Jan 15, 2010 at 2:27 PM, LJ Longwing > >>>> <[email protected]>wrote: > >>>> > >>>>> ** > >>>>> Here is an interesting question for you thread experts out there. > >>>>> > >>>>> How many concurrent 'creates' does your system support? Creates > >>>>> being a > >>>>> generic term for any given process that your system supports. The > >>>>> system > >>>>> that I support is a home grown quote/order management system and last > >>>>> year > >>>>> we stood up a web service interface for people to be able to generate > >>>>> quotes > >>>>> from their systems and get pricing back. The initial interface was > >>>>> setup to > >>>>> handle 3 concurrent creates...but as soon as it was a success we > >>>>> started > >>>>> getting slammed with several hundred at a time and choking our > >>>>> system. > >>>>> Through rigorous testing and tweaking over the last couple of weeks I > >>>>> have > >>>>> been able to get roughly 60 concurrent going through the system with > >>>>> reasonable performance....so at this point I have my Fast set to > >>>>> 30/100 > >>>>> min/max....confirmed that I'm not maxing anything specific out....but > >>>>> I > >>>>> personally have never run above 20ish threads as a high because most > >>>>> transactions are short and a fast thread count of 20 will handle > >>>>> hundreds of > >>>>> users in 'normal' operation.....so I was just wondering how many > >>>>> requests > >>>>> you guys have your system to handle concurrently....and just for > >>>>> verification...I'm talking about 'all of them hit the button within a > >>>>> second > >>>>> of each other' type of concurrent...not 'I hove 400 people logged on > >>>>> concurrently' > >>>>> _Platinum Sponsor: [email protected] ARSlist: "Where the > >>>>> Answers > >>>>> Are"_ > >>>> > >>>> > >>>> _Platinum Sponsor: [email protected] ARSlist: "Where the > >>>> Answers > >>>> Are"_ > >>>> _Platinum Sponsor: [email protected] ARSlist: "Where the > >>>> Answers > >>>> Are"_ > >>>> > >>> > >>> _Platinum Sponsor: [email protected] ARSlist: "Where the > Answers > >>> Are"_ > >>> _Platinum Sponsor: [email protected] ARSlist: "Where the > Answers > >>> Are"_ > >>> > >> > >> _Platinum Sponsor: [email protected] ARSlist: "Where the Answers > >> Are"_ > >> > > > > > _______________________________________________________________________________ > > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org > > Platinum > > Sponsor:[email protected]<sponsor%[email protected]>ARSlist: > > "Where the Answers Are" > > > > -- > > This message was scanned by ESVA and is believed to be clean. > > > > > > > _______________________________________________________________________________ > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org > Platinum > Sponsor:[email protected]<sponsor%[email protected]>ARSlist: > "Where the Answers Are" > _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:[email protected] ARSlist: "Where the Answers Are"

