Load / Stress Testing

Hello all. I am going to be running some tests on a standalone Tomcat 6 server which runs a couple of web apps i have written. I just wanted to ask for any advice on how to load/stress test, weather its and good software used, what to look out for or what the typical bottlenecks can be.
I understand every problem is different and unique but as this is my first time doing this i was looking for any helpful tips!
Thanks for any help given!

Sir_Dori wrote:
Hello all. I am going to be running some tests on a standalone Tomcat 6 server which runs a couple of web apps i have written. I just wanted to ask for any advice on how to load/stress test, weather its and good software used, what to look out for or what the typical bottlenecks can be.
I understand every problem is different and unique but as this is my first time doing this i was looking for any helpful tips!
Thanks for any help given!You can check out open source options such as http://ripplet.sourceforge.net/ or a commercial offering such as HP's LoadRunner. Typical bottlenecks involve scarce resources (database connections, incoming sockets, file space, memory, threads, CPU. etc) It varies a lot. You certainly want some aspects of your application to handle high load (such as authenticating or re-authenticating a user, displaying layout and content other than the body of the page, etc.) After that, it really depends on your application.
- Saish

Similar Messages

  • Load / Stress Testing Portal ?

    Hi ,
    Are there any downloadable tools which will help Load / Stress Testing the EP7 ?
    i want to simulate say 600 concurrent users accessing ESS functionaliy in the portal.
    and analyse the response time , memory consumption etc.
    what is the general practice to do this ?
    Regards
    Rajendra

    Hi,
      I have heard of LoadRunner and tried to find some info reg that. Hope these links will be useful.
    LoadRunner Plugin
    How to configure LoadRunner 8.0 to test EP 7 ESS ?
    SAP provides Load testing/Performance testing tool
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/000ed790-0201-0010-16bd-dc12d9de6cac
    Regards,
    Harini S

  • Stress test tool and guidelines for tuning ADF 11g

    Hi all,
    I am working our ADF 11g application on load & stress testing. The load test works fine with some millions of full dummy rows (this generated data tool is easily written by ourself). The tunning only was done with only indexing. But with stress I'm concerning with RAM and other tunning parameters such IO and share pool from OS to DB and to WL servers and how to tune it for around 200-300 concurrent connections. I'm studying Jmeter for this purpose but still not get the answer. I have tested with Oracle Openscript but it worked very heavily slow :(.
    The question here is that do you have any experiences on tuning parameters for such requirements and what is the best automatic test tool for testing multi-connections, please advise me.
    Thank you very much.

    Oracle Application Testing Suite has specific support for ADF testing:
    http://www.oracle.com/technetwork/oem/app-test/index.html
    http://www.testingreflections.com/node/view/8538
    Some info on JMeter: http://www.connotea.org/user/jdeveloper/tag/jmeter
    Another option: http://www.yenlo.nl/harryvanoosten/2010/03/10/load-testing-an-adf-11g-application/
    Some entries about tuning: http://www.connotea.org/user/jdeveloper/tag/tuning

  • Stress testing servlets

    I want to test the performance of my single servlet by making multiple and concurrent user requests. Are there any tools out there to do this.
    I tried JMeter but that does not seem to want to work.
    Thanks in advance.
    TP.

    Hello,
    I think that you do not use JMeter correctly. I encourage you to take a close look at the documentation for understanding how JMeter works (I know that the documentation is not really verbose and complete but it is sufficient enough for your needs).
    For your information, I encourage you to take also a look at Load (PushToTest) and also OpenSTA (Cyrano). These two tools are under GNU-GPL license, and are really interesting if you want to load / stress test a Web application.
    I hope it helps.

  • Load Scripts for stress testing any OAF related application

    This may not be the correct forum. However, i'm sure many of you might have used load scripts to stress test your OAF related application.
    Can any of please shed some light on how to make these load scripts for automated testing for finding the performance of OAF appls (like iPro or iExpense)? What tool do we use for these type of Self Serv appls? How can we parameterise some of the session related values inside load scripts?
    Any of your experiences will give me a good start....Thanks

    Answers to these questions are generally dependent on the application server to which you will be deploying, as each application server has its own means of tuning for performance.
    For tuning Sun's App Server 8, see the online Performance Tuning Manual, at http://docs.sun.com/app/docs/doc/819-2561
    // Gregory

  • IDOC massive loading (for stress tests purposes)

    Team,
    Is there a clean and easy way to load (tons) of IDOC into SAP XI ?
    Using the WE19 tcode ? Write an ABAP pgm that will loop ?
    We are looking for a method to do our IDOC stress test.
    Merci !

    Hi,
    in WE20 put IDOCs in collect mode (outbound profile)
    then record WE19 and create a few 1.000
    then bd87 and here we go
    or BD10 and you can create many at once (materials)
    Regards,
    michal

  • Database base storage stress test

    Hi,
    I have a ucm 11g instance up and running with SSO.
    I need to test database storage against filesystem storage.
    Does anyone have any suggestions on how to test this?
    Also I'm sure I read somewhere (but I can't find it now) that once I go in one direction I can't go back, does anyone have any details about this?
    Many thanks
    James

    First of all, take a look at File Store Provider (here: http://download.oracle.com/docs/cd/E14571_01/doc.1111/e10792/c02_settings005.htm#CSMSP445)
    In general, filesystem storage is always used even if you store data in the database, in the end. It is, though, understood as a temporary storage. In theory, you can keep your files in both locations and I see no reason why you should not be able to go from FS to DB and back, BUT you have to consider consequences (you might have to rebuild indexes or even migrate data from one storage to the other).
    As for stress tests, first you have to decide WHAT you want to test. Potential candidates are:
    - checkin of a single item (wasted effort: since FS is always used as an intermediate storage it will always be a bit faster)
    - mass checkin (e.g. from Batch Loader - especially if you use Fast Checkin settings, db can be a bit faster, but you will need a real lot of small files)
    - search
    - update (metadata - wasted effort: should be the same)
    - backup
    - migration of content
    Then, you will have to setup two environments with more-or-less the same conditions (CPU power, memory, disk speed).
    And finally, you will have to create and run you test cases. I'd suggest to automate stress tests via writing a program calling the same services with the same data. Use WebServices (if non-Java) or RIDC (if Java).
    Alternatively, if your task is "to get results" rather than "perform stress tests", you could try to approach consulting services or project managers to provide some normalized results for you. Something can be obtained in this whitepaper: http://www.oracle.com/us/products/middleware/content-management/ecm-extreme-performance-wp-077977.pdf

  • Error in running Jasper Reports for more than 100 users in stress test

    I have created a web application with Jasper reports. during the stress test, we were able to run the same report simultaneously for 100 concurrent users, after that we get the following error. I hope there is no problem in my code (correct me if i am wrong)
    We use Web Sphere
    The error we get is as follows:
    java.io.FileNotFoundException: /apps/HewittProjects/installedApps/TBIA/workforce_CUR.ear/workforceServer4.16.4.war/reports/timesheet_mgr2.jasper (Too many open files)
               at java.io.FileInputStream.open(Native Method)
               at java.io.FileInputStream.(FileInputStream.java:106)
               at com.wily.introscope.agent.probe.io.ManagedFileInputStream.(ManagedFileInputStream.java:89)
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:85)
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:64)
               at com.workforcesoftware.servlets.ReportServlet2.getCompiledReport(ReportServlet2.java:712)
               at com.workforcesoftware.servlets.ReportServlet2.doPost(ReportServlet2.java:423)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
               at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
               at com.ibm.ws.webcontainer.servlet.ServicingServletState.service(StrictLifecycleServlet.java:333)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
               at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
               at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
               at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
               at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:61)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1009)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:529)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:208)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:134)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:321)
               at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
               at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:120)
               at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:250)
               at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
               at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
               at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:652)
               at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:448)
               at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:937)
    NESTED BY :
    net.sf.jasperreports.engine.JRException: Error loading object from file : /apps/HewittProjects/installedApps/TBIA/workforce_CUR.ear/workforceServer4.16.4.war/reports/timesheet_mgr2.jasper
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92)
               at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:64)
               at com.workforcesoftware.servlets.ReportServlet2.getCompiledReport(ReportServlet2.java:712)
               at com.workforcesoftware.servlets.ReportServlet2.doPost(ReportServlet2.java:423)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
               at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
               at com.ibm.ws.webcontainer.servlet.ServicingServletState.service(StrictLifecycleServlet.java:333)
               at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
               at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
               at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
               at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
               at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:61)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1009)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:529)
               at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:208)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:134)
               at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:321)
               at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
               at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:120)
               at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:250)
               at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
               at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
               at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:652)
               at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:448)
               at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:937)
    if this really cannot find the file, then how could it run successfully for 100 users?
    Have anyone experienced this problem?
    Thanks for your help.

    ummm seems odd to have 100 users making a report.. that can be the limitation of your application..

  • ConnectionBean fail with stress test. please assist.

    I am using the following to get connected to database.
    package com.db;
    import java.util.*;
    import java.io.*;
    import java.sql.*;
    import javax.servlet.http.*;
    public class ConnectionManager implements HttpSessionBindingListener
      private Connection connection;
      private Statement statement;
      private String driver = "";
      private String dbURL = "";
      private String login = "";
      private String password = "";
    static public void main(String[] args)
          ConnectionManager cm = new ConnectionManager();
      } // main
    public ConnectionManager()
           Properties Prop = new Properties();
           try {
              InputStream configStream = getClass().getResourceAsStream("/config/database.properties");
                   Prop.load(configStream);
              configStream.close();
               } catch(IOException e) {
                      System.out.println("Error: Cannot laod configuration file ");
           driver =Prop.getProperty("driver");
           dbURL = Prop.getProperty("dbURL");
            login = Prop.getProperty("login");
            password = Prop.getProperty("password");
    public void setDriver (String sDriver)
       if (sDriver != null)
           driver = sDriver;
    public String getDriver ()
       return driver;
    public void setDbURL (String sDbURL)
        if (sDbURL != null)
         dbURL = sDbURL;
    public String getDbURL()
       return dbURL;
    public void setLogin (String sLogin)
       if (sLogin != null)
          login = sLogin;
    public String getLogin()
       return login;
    public void setPassword (String sPassword)
       if (sPassword != null)
          password = sPassword;
    private String getPassword()
       return password;
    private void getConn ()
       try
          Class.forName(driver);
          connection = DriverManager.getConnection(dbURL,login,password);
          statement=connection.createStatement();
       catch (ClassNotFoundException e)
          System.out.println("ConnectionManager: driver unavailable");
          connection = null;
       catch (SQLException e)
          System.out.println("ConnectionManager: driver not loaded");
          connection = null;
    public Connection getConnection()
       if (connection == null)
          getConn();
       return connection;
    public void commit() throws SQLException
        connection.commit();
    public void rollback() throws SQLException
        connection.rollback();
    public void setAutoCommit(boolean autoCommit)
        throws SQLException
        connection.setAutoCommit(autoCommit );
    public ResultSet executeQuery(String sql) throws SQLException
        if (connection == null || connection.isClosed())
            getConn();
        return statement.executeQuery(sql);
    public int executeUpdate(String sql) throws SQLException
        if (connection == null || connection.isClosed())
            getConn();
        return statement.executeUpdate(sql);
    public void valueBound(HttpSessionBindingEvent event)
        System.err.println("ConnectionBean: in the valueBound method");
        try
          if (connection == null || connection.isClosed())
            connection = DriverManager.getConnection(dbURL,login,password);
            statement = connection.createStatement();
        catch (SQLException e)
          e.printStackTrace();
          connection = null;
    public void valueUnbound(HttpSessionBindingEvent event)
        close();
    public void close()
       try
           if ( connection != null
                || !connection.isClosed())
            connection.close();
       catch (SQLException e)
          e.printStackTrace();
    }This is what I use to test this code:
    <%@ page import="java.sql.*" %>
    <%@ page import="java.text.*" %>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*" %>
    <p>
    Testing DBConnection Bean. <p>
    <%
    String sql="SELECT * FROM BS_PERSON" ;
    com.db.ConnectionManager CM = new com.db.ConnectionManager();
    ResultSet rset = CM.executeQuery(sql);
    while (rset.next()) {
       out.println(rset.getString("PERSON_USERCODE") + "<br>");
    %>When I stress test it, the code perform well for a while and then throw the following on Tomcat:
    ConnectionManager: driver not loaded
    ConnectionManager: driver not loaded
    ConnectionManager: driver not loaded
    Is there anything I could improve?
    For application that has many database read/write, is there any open source connection program that uses connection pooling?
    Thank you.

    Thank you for the prompt response.
    Yes. the code works and the data set gets return when I execute the code. It only fail with stress test after say 150-160 hits.
    I have put in the printStack Trace and got the following:
    ConnectionManager: driver not loaded
    java.sql.SQLException: ORA-00020: maximum number of processes (150) exceeded
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
         at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
         at oracle.jdbc.ttc7.O3log.receive1st(O3log.java:407)
         at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:259)
         at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
         at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
         at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
         at java.sql.DriverManager.getConnection(DriverManager.java:512)
         at java.sql.DriverManager.getConnection(DriverManager.java:171)
         at com.db.ConnectionManager.getConn(ConnectionManager.java:106)
         at com.db.ConnectionManager.executeQuery(ConnectionManager.java:154)
         at org.apache.jsp.dbconnection_jsp._jspService(dbconnection_jsp.java:76)
    Could it be that I didn't specifically close the connection? How could I go about doing it?
    Thank you.

  • Stress Test Oracle 9i

    Hello,
    I want to perform stress tests on my Oracle 9i database. Is there a software that you can recommend to use. Maybe even scripts or shareware. Thank you.

    There are a variety of third party load test tools available, generally part of a suite of QA tools. You can also build your own test harnass.
    99% of the work, however, is in figuring out what to run to put a representative stress on your application and, thus, your database. Figure out a representative number of OLTP users, a representative number of DSS users, an appropriate overlap in time and in data, etc.
    Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

  • Stress test tool for EBS

    Hi Hsawwan, other EBS APPS dba's!
    We are trying to predict some performance according future load on EBS. This is classic stress test techniques. We want to automate stress on APPS side and run some requests and forms as well....
    With "Load runner" we have unsolvable problems....
    What can we use for that?
    THX,
    Damir Vadas

    Damir,
    With "Load runner" we have unsolvable problems....What do you mean by unsolvable problems?
    What can we use for that?You may try OpenSTA.
    OpenSTA Users Home Page - Free Web Load and Stress Testing Tool
    http://www.opensta.org/
    Also, have a look at the following links:
    Automated Testing for the E-Business Suite
    http://blogs.oracle.com/stevenChan/2006/06/automated_testing_for_the_ebus.html
    Breaking Oracle Presentation
    http://www.psoug.org/pres/ukoug08_breaking_oracle.pdf

  • Stress test Forms 9i

    Hi,
    I would like to perform an stress test on 9i Forms application and I have two approaches:
    1) Buy a tool.
    2) Build a client that performs petitions.
    The first approach doesn't seem to work because I only know 1 provider which haven't answered to my request. Anybody knows tools like what I need?
    For the second approach I would like to know:
    * Is there any forms API which I could use to build my client? Probably there must be one because I only need the communication classes of the forms's applet and Interact with them.
    Thanks. Miquel.

    YES, you can do this by recording http traffic. This is exactly what you do with LoadRunner from Mercury Interactive. The recorder have a correlation tool wich take care of the dynamic part of the URL and modifies the generated script for you by inserting variables into the programmable script. I have used LoadRunner succesfully to stress test our Internet based Forms 9.0.2 application (http://www.syx.com). We did not dare to go alive without a fullscale test. LoadRunner did the job, and we found several scalability problems realted to the OS and AOS configuration. With LoadRunner you can setup several load generating servers - world wide if you like - each can simulate tousands of clients. Everthing can be orcestered from a mangament console where can can fire up clients with different scripts to form various load patters. E.g. I used one script wich logged users in, waited, and logged out. Other scripts instanciated and closed new forms all the time. E.g. by combining these scripts I could see how the server scaled when I had 200 passive users in the system, 10 users logging in every 10 seconds, 10 users logging out every 10th sec, and 50 users continuosly instanciating and closing new forms wich actually where running the most demanding DB query in our system.

  • Stress Test Software

    Hello,
    I like to stress test my Oracle 9i database, can someone recommend a software for stress testing. Thank you.

    There are a variety of third party load test tools available, generally part of a suite of QA tools. You can also build your own test harnass.
    99% of the work, however, is in figuring out what to run to put a representative stress on your application and, thus, your database. Figure out a representative number of OLTP users, a representative number of DSS users, an appropriate overlap in time and in data, etc.
    Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

  • Load & Performance Testing In The Cloud - Silverlight Support

    I currently have Visual Studio Premium with MSDN. I know in order to use Load Testing in the cloud I will have to upgrade to Ultimate.
    One of the our web apps that I need to do a load and performance test on uses SilverLight.
    Here is my questions. I want to verify that the provisioned virtual machines in the cloud when I run load testing will support Silverlight. I know it sounds like a silly question but before I go to Management to approve this upgrade I need to verify it will
    work. No need to waste money.
    Thanks

    Hi rgelston iso.com,
    The web tests: Web tests are used to test the functionality of Web applications and to test Web applications under load. Web tests are used both in performance tests and stress tests. It works at the protocol layer by issuing HTTP requests.
    Reference:
    https://msdn.microsoft.com/en-us/library/ff520100%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
    So the real issue is that whether your apps meet the above requirements.
    For example, for the general Silverlight Apps, it would have some limitations if you want to create web performance tests.
    http://blogs.msdn.com/b/anutthara/archive/2010/03/21/testing-support-for-silverlight-apps-in-visual-studio-2010.aspx
    Best Regards,
    Jack
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Stress Test using em console in 11g results in lesser number of instances

    Hi All,
    We are doing Stress/Load testing using em console in SOA Suite 11g. The problem we are encountering is, em fails to create as many instances as it should. Under "Additional Test Options", we check the "Enable Stress Test" checkbox and give different values for following parameters:
    Concurrent Threads     50
    Loops per Thread     20
    Delay in Milliseconds     1000
    But instead of creating 1000 instances of this composite, em console create only 998 and fails to create 2 instances without giving any error in console logs or server logs.
    Similarly, with below setting:
    Concurrent Threads     50
    Loops per Thread     40
    Delay in Milliseconds     1000
    Instead of creating 2000 instances it creates only 1991 and 9 instances fail without any error. Is this a known bug or we are missing something here? Any pointers will be helpful.
    Thanks,
    Akash

    In case you have multiple instances running, whereas any instance has an unique value started as correlation, when the engine receives the messages for the intermediate receive operation it will be routed without problems to the right instance. In this case, it is not a problem if the engine creates a new composite instance for the intermediate messages.
    We have this situation in Production without any problem.
    Anyway should be simple to simulate the same situation in your development environment to make sure it works well in your scenario.
    Regards
    Luis Fernando Heckler

Maybe you are looking for