DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workkloads.

Secure your stack and shape the future! Help dev teams across the globe navigate their software supply chain security challenges.

Releasing software shouldn't be stressful or risky. Learn how to leverage progressive delivery techniques to ensure safer deployments.

Avoid machine learning mistakes and boost model performance! Discover key ML patterns, anti-patterns, data strategies, and more.

Related

  • Fixing Common Oracle Database Problems
  • How to Restore a Transaction Log Backup in SQL Server
  • Why I Built the Ultimate Text Comparison Tool (And Why You Should Try It)
  • Enhancing Avro With Semantic Metadata Using Logical Types

Trending

  • Google Cloud Document AI Basics
  • A Developer's Guide to Mastering Agentic AI: From Theory to Practice
  • Integrating Security as Code: A Necessity for DevSecOps
  • Unlocking AI Coding Assistants Part 2: Generating Code
  1. DZone
  2. Data Engineering
  3. Databases
  4. Performance Issues (The Problem)

Performance Issues (The Problem)

In several years working as a software developer I have faced performance issues several times, and I want to share some tips about this topic.

By 
Javier Santos user avatar
Javier Santos
·
May. 18, 20 · Opinion
Likes (3)
Comment
Save
Tweet
Share
5.0K Views

Join the DZone community and get the full member experience.

Join For Free

Today I want to talk about my experience working on solve performance issues in the systems. In several years working as a software developer I have faced performance issues several times, and I want to share some tips about this topic.

In my opinion, to solve a performance problem you need all your focus on THE PROBLEM, you need as much information about it as you can get. In this post, I want to share the way how I work to understand the problem. usually, I have spent around 70% of the time on understanding the problem and only 30% on making changes in the source code. 

I want to focus this post on how to get as much information about the problem as you need it to solve the problem.

Reproduce

To me, this is the first task to do when you start to work on performance issues, you have to be able to reproduce the issue any time you need it. and to all the sceneries as possible. In this way when you start to work on your changes, you will be able to validate them and check whether you are on the right way or not.

One tip in this topic "Be smart to test your chances", usually to reproduce the performance issues you need a lot of time or many users connected to the system concurrently. And of course, you want to reduce this complexity to work faster. For example, maybe you have a problem storing 1.000.000 records into your database (You expect to be able to store all those records successfully). But I am pretty sure you can reproduce the problem storing only 200.000 records. Then you can test your changes faster (Off curse is faster storage 200.000 records instead 1.000.000)

Understanding

You need to identify the type of problem, think about these questions.

  1. Is it a problem related to the amount of data processed? (For example, there are millions of records to be processed).
  2. Is it a problem related to concurrency? (For example, you need a high number of users connected to the system).
  3. Is it a problem related to the velocity? (The system can complete the task but takes too much time).

Once you get your answer, you know what kind the problem you are facing. keep in mind this answer all the time, to work on the next questions, and to find the solution (remember At this point focus on THE PROBLEM).

Now lets to identify what resource has the problem. think about these questions.

  1. Is it a problem related to memory?.
  2. Is it a problem related to the database connection? (For example, you can not create or get a connection from the pool).
  3. Is it a problem related to the file system? (For example, there is no space into the file system, or you are reading to writing too much data from a file).
  4. Is it a problem related to network connection? (For example, you can not get a connection to an external resource, there is a lot of traffic into the network).
  5. Is it a problem related to SQL statements?.
  6. Is it a problem related to the algorithm? (For example, you can improve your process and reduce the statements. Or you can use a caching tool like Ehcache or store date into local storage inside the browser, etc).

Measuring

Ok, now you can reproduce the issues and you know the kind of problem you are working on. The next step you have to monitor resources inside your environment.

  • Measure the memory of your application (Define the behavior of the memory when the process is running).
  • Verify the number of sessions and connections of your database.
  • Get the size of requests and responses (If you are working on web applications).
  • Count the number of records into the database (you do not need to verify into all the tables, verify only the tables related to the service with the problem).
  • How long time take your service to finish when there are several users.
  • You need to define a baseline for the performance of your application
    • The number of users of concurrent users allowed by the system before fail.
    • The number of successful operations before fail.
    • The number of records stores into the database before fail.

At this point, you should have enough information about what is happening, how it is happening, and where is happening. you have a general vision and you are ready to start to think about how to solve the problem (Believe me, you are very very close to solving the problem).

Database

Opinions expressed by DZone contributors are their own.

Related

  • Fixing Common Oracle Database Problems
  • How to Restore a Transaction Log Backup in SQL Server
  • Why I Built the Ultimate Text Comparison Tool (And Why You Should Try It)
  • Enhancing Avro With Semantic Metadata Using Logical Types

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!