Why am I receiving Response code: Non HTTP response code: java.net.SocketException?

23.6k views Asked by At

I am trying to send requests using JMeter to my application that is running on localhost but many of the requests get failed due to java.net.SocketException. I do not see any exceptions in console though.

I read these question1 and question2 but did not help much.

My code is as following:

 try {
        return myService.findItems(group);

    } catch (NullPointerException n) {
        n.printStackTrace();
    } catch (HibernateException h) {
        h.printStackTrace();
    } catch (IOException i) {
        i.printStackTrace();
    }
    return null;

Repository

  public LinkedHashMap findItems(String group) throws NullPointerException, HibernateException, IOException {
        Session session = sessionFactory.getCurrentSession();
                 ..... //request is sent to database

        return items;
    }

Screen shots of my JMeter configuration

enter image description here

enter image description here

enter image description here

enter image description here

2

There are 2 answers

3
Jiang YD On

SocketException means network problem. check you running server status.

0
Nachiket Kate On

From Screenshots you provided, I think either you thought your system/localhost as super computer or you have mis-configured the jmeter settings.

Screenshot shows, 10000 users/threads will start in 1 second which is completely unreal for application running on a localhost. Jmeter alone will eat most CPU, memory i.e. system resources.

If your Jmeter is eating all resources will your application will get anything (Simple answer is NO) Thus application will go down and you will start getting timeout errors or socket exceptions.

If you have jmeter and application on diff machines then still 10000 users in 1 second is very high load for a normal application and it is obvious that you will face such errors. Try running test with realistic load that is expected for your application with given hw. Maybe 100 users in 1 second and gradually increase them to expected value.

I hope you understood it now :)