Maximize Agent Performance Dave Hatter & Tim Bankes Libertas Technologies, LLC What We'll Cover ... • Looking for performance • Providing appropriate Agent security • Coding choices, it makes a difference • Managing Agents -- the Agent manager • Debugging Agents • Optimizing Agent performance A Little About Us •Dave Hatter • Partner, Libertas Technologies, LLC • Numerous certifications: •PCLP Application Developer R4, R5, D6 •CompTIA i-Net+, Network+, e-Biz+ •Master Certified Internet Webmaster (CIW) Designer •MCP -- Windows NT • SearchDomino.com Expert/Speaker • Author/Co-Author of numerous Domino books and Tech Editor of several Domino books •Tim Bankes • Partner, Libertas Technologies, LLC • Numerous certifications: •PCLP Application Developer R4, R5, D6 •CompTIA i-Net+ •Certified Internet Webmaster (CIW) Associate • SearchDomino.com Speaker • Author/Co-Author of numerous Domino books Factors Affecting Performance • Security • Pro: Agents are constrained by the Notes/Domino security model • Con: Agents won't run without proper authorization • Scheduling • Pro: Agents can be invoked on a schedule • Con: Requires coordination to ensure schedule does not conflict with other server tasks • Logging • Pro: Agents provide extensive logging capability • Con: creates disk I/O, which takes time and consumes space • Coding choices • There are pros and cons to each of the languages • Formula language, LotusScript, Java Can an Agent Run? Agent Execution • There are many security factors that can impact the execution of an agent, including: • • • • ACL permissions Server permissions Agent context Agent coding choice Can an Agent Run? Server Based Agents • Agent execution • Database ACL is dependent upon ... • Reader access is required to run an agent • Public Access users can run an agent if granted the authority • If the agent invoker has the authority to run the agent, the permissions of the creator of the agent dictate what the agent can do • Server restrictions • Settings in the Security tab of the Server document dictate if a user can run a specific type of agent • Agent context can determine whether the agent can run, and/or whether it can run reliably • • • • Desktop or server Foreground or background Personal or shared Notes client or Web client Can an Agent Run? Server Based Agents Defined • Server Based agents run from a database on a Domino server • Invoked in a number of different ways • Agent Manager (AMGR) • The RunOnServer method • The HTTP Task • Agents called from Web browser such as a WebQueryOpen or WebQuerySave agent, or directly from a URL • The Router Task • When agents are run as a result of e-mail delivery, for example an "After new mail has arrived" agent Can an Agent Run? Local Agents Defined • Local agents run from a database on a Notes client workstation • • "Local" is specified for the "Run on" setting in a scheduled agent It is invoked from the Actions menu, the Agent list or the "When documents Have Been Pasted" trigger • Personal agents • Can only be run by their creator • Are not accessible by browser clients • Are controlled by the "Run personal agents" field in the "Agent Restrictions" section of the "Security" tab of the Server document • Can't do anything their creator can't do Can an Agent Run? Personal vs. Shared Agents • Shared agents • Can be run by any user who can access the database containing the agents • Are constrained by the ACL of a database • Can't be used by any user with less than Reader access in the database ACL • May have other restrictions based on the coding option of the agent Can an Agent Run? Foreground & Background Agents • Foreground agents are invoked by a user through the Notes client • • • • Via the Actions menu or Agents list Security restrictions are not checked Front-end classes are supported Foreground agents will "lock-up" the client while running. This is not the case in ND6 • Background agents are launched on a schedule or triggered by certain events such as before new mail arrives • • • Security restrictions ARE checked Front-end classes are NOT supported Run with the permissions of the agent creator Can an Agent Run? Embedded Agents & Web Agents • Embedded Agents are Agents called by another agent • Rights and restrictions of the calling agent are applied to the called agent • Web Agents are invoked by • Agent Manager is not involved a Web client • Run with the permission of the creator • Unless the Agent property "Run as Web User" is enabled • Three types of Web Agents • WebQueryOpen • WebQuerySave • Invoked via URL Can an Agent Run Faster/Reliably? Web Agents • Server document settings that control Web agents • Internet Protocols/ HTTP/Web Agents section •Run • • Web agents concurrently Determines if more than one Web agent can be executed at the same time Same effect as the DominoAsynchronizeAgents parameter in the Notes.INI file •Web agent timeout • Specifies how long Web agents can run Agent Coding Options • Domino provides numerous coding options when building agents • • • • Java LotusScript Formula Language Simple Actions Agent Coding Options • The Formula • Very fast • Fastest • • • • language has many advantages when updating more than 15% of docs in a DB Can accomplish many complex tasks easily with minimal code Easy to learn Vast number of experienced developers Leverage existing expertise • LotusScript has the added ability to access virtually all of Domino's capabilities through the back-end classes • • • Fastest when updating less than 15% of docs in a DB Extensive debugging and logging capability Support for COM/OLE Agent Coding Options • Java also has the ability to access virtually all of Domino's capabilities through the back-end classes (NOI) • • • • Multi-threaded Robust logging capability Servlets only load once Support for CORBA, IIOP and JDBC • Which do you • LotusScript use? • Supports more Domino functionality "out-of-the box" • Has better debugging facilities • Java • Bottom line -- Choose the language that provides the best ROI and performance • Is not proprietary, is highly extensible, and faster when multi-threading • Servlets are generally faster than agents Agent Restrictions • LotusScript and Java agents are classified as Restricted or Unrestricted • Unrestricted agents can perform low-level operations such as •File I/O •Network I/O •Calling external programs •Changing the system date and time • Set in the Server document •Under Security --> Agent Restrictions Agent Manager • AMGR controls various aspects of scheduled and event-driven agents • • • • • • When agents run Security Agent context and loading Where agents run Error handling and logging Resources used Agent Manager • AMGR is configured through Server document settings and Notes.ini parameters •A list of all scheduled and event-triggered agents is queued based on the configured settings • Agent manager periodically checks to see if new agents should be queued • Scheduled agents are executed when their thresholds are met • There are three types • Eligible to execute • Waiting for an AMGR process to run them • Scheduled to execute • Event-triggered agents • Waiting • Waiting of Agent queues for their time to run for an event • For event triggered Scheduled Mail-triggered Agents, there are 3 trigger types New/updated documents Agent Manager Agent Queues • To display a list of scheduled agents, issue the Tell Amgr Schedule command • Shows information about agents scheduled during the current day • Queue Type • Trigger type • Time scheduled to run • Agent name • The database on which the agent runs • Agent Queues • "E" - Eligible to execute • "S" - Scheduled to execute • "V" • - Event-triggered agents waiting for an event Trigger types • "S" - Scheduled • "M" - Mail-triggered • "U" - New/updated document-triggered Agent Manager • Factors • • • • that control agent execution in AMgr Threshold for AMgr queuing AMGR schedules Load on AMgr Number of concurrent agents allowed to run on the server Agent Manager • The AMgr_SchedulingInterval INI variable specifies how often the Agent Manager moves agents from the Scheduled queue to the Eligible queue • Enter a value between 1 to 60 minutes • If the scheduler isn't running often enough, check this setting • Default is 1 minute • The AMgr_UntriggeredMailInterval INI variable specifies the delay between running the AMGR check for "untriggered" mail • Untriggered mail is put into a database by replication • Enter • a value between 1 to 1440 minutes Default is 60 minutes Agent Manager • AMgr Schedules New/modified event-driven agents are scheduled immediately After first run of an agent, two types of parameters control event-driven agent scheduling •Delay Parameters •Interval Parameters Agent Manager • Delay Parameters • AMgr_NewMailEventDelay • Delay of execution in the schedule for a new mail-triggered agent after a new mail message is delivered • The default is 1 minute • AMgr_DocUpdateEventDelay • Delay of execution in the schedule for document update-triggered agents after a document update event • Default is 5 minutes Agent Manager • Interval Parameters • Interval Parameters control a delay between the execution of the same event-triggered agent • If the minimum interval has not elapsed when an agent is triggered, AMGR schedules the agent to run at its last run time plus the minimum interval • AMgr_NewMailAgentMinInterval • Delay of execution in the schedule for a new mail-triggered agent after a new mail message is delivered. The default is 1 minute. • AMgr_DocUpdateAgentMinInterval • Delay of execution in the schedule for document update-triggered agents after a document update event. Default is 5 minutes. Agent Manager • AMgr Load • Agent execution is also constrained by available resources and resource allocation • Settings • • • in the Server document that have an impact Max Concurrent Agents Max LotusScript/Java Execution Time If agents are being scheduled faster than they can be run, you may see ... • "AMgr: Agent scheduling is paused" • May need to increase the number of concurrent agents • Max Concurrent agents • Allows more than one agent to run at the same time • Can improve AMGR performance, but consumes additional resources • Maximum number of concurrent agents is 10 Daytime default is 1 and night time is 2 • Each Agent is run by a separate Agent Executive (AMGR), creating a stable, fault tolerant environment • Agent Manager • Minimum AMgr delays • Agent execution delays can be minimized by tweaking the user-defined AMgr parameters in the Notes.INI file • Certain minimum delays are built into AMgr so that setting all user-defined parameters to zero will not allow the server to consume too many resources Debugging Agents • Agent • • • • • • • Debugging Options Agent Manager debugging Agent Log Agent Test NotesLog Class Server Console Remote Debugger Router agent debugging Debugging Agents • Agent Manager debugging • Can help in troubleshooting problems with scheduled and event-triggered agents • Provides extensive debugging information • Agent Manager logging will be directed to the console and the Notes log • Three options • Add • Add the Debug_Amgr parameter to the Notes.INI file Log_AgentManager parameter to the Notes.INI file • Add DEBUG_OUTFILE to the Notes.INI file Debugging Agents • Debug_Amgr=flag • Available flags are ... p - agent performance c - agent control statistics parameters e - Agent Manager events r - agent execution reports s - Agent Manager l - agent loading reports scheduling m - agent memory v - verbose mode warnings * - all of the above Debugging Agents • Log_AgentManager • Provides less information, but consumes less resources than Debug_Amgr • Form is Log_AgentManager=flag •0 - do not show logging •1 - partial and complete successes •2 - complete successes only • Debug_Amgr will override Log_AgentManager Debugging Agents • DEBUG_OUTFILE • • • • • Writes server console messages to a specified file. Form is DEBUG_OUTFILE=path Use this sparingly as it generates additional disk I/O For local agents, add this parameter to the workstation's Notes.INI file. May be easier to search and send to Lotus for support Debugging Agents • Server • Console Options Use TELL commands to interact with AMgr- the supported commands are •Tell AMgr Pause •Tell AMgr Resume •Tell AMgr Schedule •Tell AMgr Status •Tell AMgr Debug •Tell AMgr Quit Debugging Agents • Agent • Log Each time an agent is executed, it creates a brief report that includes •Date and time of run •Number of documents processed •Actions taken • Subsequent • Select an runs overwrite the log agent and choose Agent/Log from the menu in the Designer client to view its log Debugging Agents • Developers can include code that will help in debugging an agent • LotusScript Specific Options • Message Box function • Print Statement • Java Specific Options •println method •Agent Runner Debugging Agents • NotesLog Class • Powerful, easy to use debugging tool • Can be used with LotusScript or Java agents to write both status and error messages • Works with both foreground and background agents • Highly configurable • Good idea to add to agents with any complexity • Choice of output options •A Notes database • A mail memo • A file (for scripts that run locally) • An agent log Debugging Agents Router Initiated Agents • Router • agents are not managed by AMGR The level of errors logged is set in the Configuration Settings document •Router/SMTP • --> Advanced --> Controls Options are •Minimal •Normal (default) •Informational •Verbose Performance Tips Web Agents • Allow Web Agents to run concurrently • Run Web Agents Concurrently setting in the Internet Protocols --> HTTP tab of the Server document • Daytime • vs. Nighttime settings Make sure there is not a gap in the beginning and end times between daytime and nighttime hours • No Agents will run during the gap time • Maximum • Agent Execution Time Agents may timeout if set too low • Check limit" the log regularly for the error "Agent did not complete within the time Domino 6 Agent Overview • New • • • • • • • agent features in ND6 Converting shared and private agents User Activation New Restrictions Script Library Signing Server agents can access other servers New Console Commands for AMGR Remote Debugging Resources • Books at Amazon.com • • Lotus Notes Domino Essential Reference Fast Track CLP: Lotus Notes and Domino R5 Application Development • Lotus Notes and Domino 6 Development • Articles • • LDD Today -- all articles by Julie Kadashavich In THE VIEW • Agents in Notes/Domino 6: A Comprehensive Preview for Administrators and Developers, Julie Kadashavich, May/June 2002 The 7 Key Points to Take Home • • • • • • • You can control & improve agent performance Coding choices can impact performance It is critical to understand when and how different types of agent will be run AMGR is a powerful ally for agent performance and monitoring You can tweak AMGR through the Notes.ini, Server and Server Configuration documents There are many useful agent debugging tools Security has a major impact on agents Submit your questions now by clicking the Ask a Question button on the bottom left corner of your presentation screen. Thank you! You can send additional questions to Dave Hatter and Tim Bankes via [email protected].
© Copyright 2026 Paperzz