Drupal Feeds

myDropWizard.com: It's OK to build new sites on Drupal 7

Feeds from Drupal.org - Tue, 2017-10-17 21:11

In about a month, it'll be 2 years since Drupal 8.0.0 was released. Drupal 8 has come a long way since then, especially with Drupal 8.4.0 released two weeks ago, which is the most feature-packed release yet.

Drupal 8 is the future of Drupal. It's awesome.

However, looking at all the blogs and articles and podcasts in the Drupalsphere, we're sending a message that you should only build new sites on Drupal 8.

The common wisdom is that starting a new project on Drupal 7 is dumb idea.

While I'm sure there's lots of people who are OK with that or even think that's the right message...

I strongly believe that we are hurting the Drupal project by sending that message.

Read more to find out why!

Categories: Straight From Drupal

Drupal core announcements: Coding Standards Change Proposals 10/17

Feeds from Drupal.org - Tue, 2017-10-17 18:59

The TWG coding standards committee is announcing two issues for final discussion. Feedback will be reviewed on 10/31/2017.

New issues for discussion: Pending ratification Provisionally approved issues Interested in helping out?

You can get started quickly by helping us to update an issue summary or two or dive in and check out the full list of open proposals and see if there's anything you'd like to champion!

Categories: Straight From Drupal

Drupal core announcements: Coding Standards Change Proposals 10/17

Planet Drupal - Tue, 2017-10-17 18:59

The TWG coding standards committee is announcing two issues for final discussion. Feedback will be reviewed on 10/31/2017.

New issues for discussion: Pending ratification Provisionally approved issues Interested in helping out?

You can get started quickly by helping us to update an issue summary or two or dive in and check out the full list of open proposals and see if there's anything you'd like to champion!

Commerce Multiple Payments

Latest Drupal Modules - Tue, 2017-10-17 17:39

This module allows you to accept multiple payments during checkout for an order. It's intended for payment types like gift cards or store credit, where the customer may not be able to fully pay for the order with the available balance. This module allows payments from supporting gateways to be added in a new checkout pane, where they can reduce the balance due on an order. Then, the remainder can be paid with the standard payment information pane.

Commerce Multiple Payments

Categories: Straight From Drupal

Elevated Third: Elevated 3 Takeaways: Drupal 8

Planet Drupal - Tue, 2017-10-17 16:35
Elevated 3 Takeaways: Drupal 8 Elevated 3 Takeaways: Drupal 8 Nelson Harris Tue, 10/17/2017 - 10:35

In this edition of 3 Takeaways, our Business Development Strategist, Nelson Harris, reviews Drupal 8 and how the latest improvements help get more out of the box, leverage mobile, and upgrade smoothly.

 

 

Hi, I’m Nelson Harris, Business Development Strategist at Elevated Third. A question I get a lot from people is “what’s new and interesting about Drupal 8, and why might I upgrade.” There are a lot of reasons why you might want to upgrade to Drupal 8 but I’m just going to list three of them.

Takeaways #1: First, you get more out of the box.

There are a lot of useful modules in Drupal 8 core that have been built in. Things like views, multilingual, a WYSIWYG editor, and more types of fields. This means you can spend less time configuring and installing modules, and more time working on your site.

Takeaway #2: Second of all, mobile is in it’s DNA.

Built-in themes are all responsive and adapt well to different screen sizes. Tables will scale, and the new admin toolbar is really good on mobile devices. Chances are, you’re probably watching this video on the screen of your mobile device right now, so you can imagine why mobile might be important.

Takeaway #3: Finally, it’s built to be more future proof.

Where an upgrade from 7 to 8 or 6 to 7 requires scraping your codebase and starting all over from scratch, Drupal 8 is designed to go from 8 to 9 and 9 to 10 more seamlessly and more like an update patch as opposed to starting over. An investment in Drupal 8 really means that you're investing in your website because it's going to be easier to upgrade in the future.

Elevated Third: Elevated 3 Takeaways: Drupal 8

Feeds from Drupal.org - Tue, 2017-10-17 16:35
Elevated 3 Takeaways: Drupal 8 Elevated 3 Takeaways: Drupal 8 Nelson Harris Tue, 10/17/2017 - 10:35

In this edition of 3 Takeaways, our Business Development Strategist, Nelson Harris, reviews Drupal 8 and how the latest improvements help get more out of the box, leverage mobile, and upgrade smoothly.

 

 

Hi, I’m Nelson Harris, Business Development Strategist at Elevated Third. A question I get a lot from people is “what’s new and interesting about Drupal 8, and why might I upgrade.” There are a lot of reasons why you might want to upgrade to Drupal 8 but I’m just going to list three of them.

Takeaways #1: First, you get more out of the box.

There are a lot of useful modules in Drupal 8 core that have been built in. Things like views, multilingual, a WYSIWYG editor, and more types of fields. This means you can spend less time configuring and installing modules, and more time working on your site.

Takeaway #2: Second of all, mobile is in it’s DNA.

Built-in themes are all responsive and adapt well to different screen sizes. Tables will scale, and the new admin toolbar is really good on mobile devices. Chances are, you’re probably watching this video on the screen of your mobile device right now, so you can imagine why mobile might be important.

Takeaway #3: Finally, it’s built to be more future proof.

Where an upgrade from 7 to 8 or 6 to 7 requires scraping your codebase and starting all over from scratch, Drupal 8 is designed to go from 8 to 9 and 9 to 10 more seamlessly and more like an update patch as opposed to starting over. An investment in Drupal 8 really means that you're investing in your website because it's going to be easier to upgrade in the future.

Categories: Straight From Drupal

Block Formatter

Latest Drupal Modules - Tue, 2017-10-17 16:02

-- SUMMARY --

If you would like to render a block in an entity reference field, this is the module for you!

-- REQUIREMENTS --

You must have the block, block_content and entity_reference core modules installed.

-- INSTALLATION --

* Install as usual as per http://drupal.org/node/895232.

-- USAGE --

Categories: Straight From Drupal

Sketch

Latest Drupal Themes - Tue, 2017-10-17 15:54
_____________ __._______________________________ ___ ___ / _____/ |/ _|\_ _____/\__ ___/\_ ___ \ / | \ \_____ \| < | __)_ | | / \ \// ~ \ / \ | \ | \ | | \ \___\ Y / /_______ /____|__ \/_______ / |____| \______ /\___|_ / \/ \/ \/ \/ \/

Pluggable theme with focus on bundle js,css and scss libs.

Categories: Straight From Drupal

Drupal Modules: The One Percent: Drupal Modules: The One Percent —Timelogin (video tutorial)

Planet Drupal - Tue, 2017-10-17 13:47
Drupal Modules: The One Percent —Timelogin (video tutorial) Project page screenshot NonProfit Tue, 10/17/2017 - 08:47 Episode 40

Here is where we seek to bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll look at Timelogin, a module which restricts users, based on role, from logging in during certain times of the day.

Drupal Modules: The One Percent: Drupal Modules: The One Percent —Timelogin (video tutorial)

Feeds from Drupal.org - Tue, 2017-10-17 13:47
Drupal Modules: The One Percent —Timelogin (video tutorial) Project page screenshot NonProfit Tue, 10/17/2017 - 08:47 Episode 40

Here is where we seek to bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll look at Timelogin, a module which restricts users, based on role, from logging in during certain times of the day.

Categories: Straight From Drupal

Appnovation Technologies: Appnovator Spotlight: Paulo Gomes

Feeds from Drupal.org - Tue, 2017-10-17 10:35
Appnovator Spotlight: Paulo Gomes Who are you? What's your story? My name is Paulo Gomes, I am from Portugal and moved to the UK with my wife in 2016 to join Appnovation crew. I am an tech and web enthusiast since the 90's (so not too old and not too young), I graduated in Computers and Management in 2002, after that worked in many places and companies, as freelancer, trainer and t...
Categories: Straight From Drupal

Appnovation Technologies: Appnovator Spotlight: Paulo Gomes

Planet Drupal - Tue, 2017-10-17 10:35
Appnovator Spotlight: Paulo Gomes Who are you? What's your story? My name is Paulo Gomes, I am from Portugal and moved to the UK with my wife in 2016 to join Appnovation crew. I am an tech and web enthusiast since the 90's (so not too old and not too young), I graduated in Computers and Management in 2002, after that worked in many places and companies, as freelancer, trainer and t...

Dropsolid: Load testing Drupal with Blazemeter and JMeter

Planet Drupal - Tue, 2017-10-17 09:59
Load test stress meter 17 Oct Load testing Drupal with Blazemeter and JMeter Niels A Tech

When going live with a big project, it is all about reassuring the client that the project will be able to handle all those excited visitors. To achieve that state of zen, it is paramount that you do a load test. The benefits of load tests go beyond peace of mind, however. For example, it enables you to spot issues that only happen during high load or let’s you spot bottlenecks in the infrastructure setup. The added bonus is that you can bask in the glory of your high-performance code - on the condition the test doesn’t fail, of course.

Need help with your load and performance testing?
Contact us 

 

When doing a load test it is important to do the following steps:

  • Analyse existing data
  • Prepare tests
  • Set up tools
  • Run the tests
  • Analyse the results

 

Analyse existing data

If you are in luck, you will already  have historic data available to use from Google Analytics. If this isn’t the case, you’ll have to get in touch with your client and ask a few to-the-point questions to help you estimate all the important metrics that I’ll be covering in this post.

 

A couple of tips I can give if you lack the historic data:

  • Ask if the client has a mailing (digital or old-school) list and how many people are on it
  • If you have made comparable sites in the past, look at their Google Analytics data
  • Ask the client how they are going to announce their new website
  • When you are working on an estimate, it is always better to add an extra 15% to it. Better safe than sorry!

The first thing you need to do, is set a reference frame. Pick a date range that has low activity as well as the highest activity you can find. Then start putting that data into a spreadsheet, as pictured below:

An example spreadsheet for load testingYou can download an example copy of the file here

 

The most important metrics we are going to calculate are:

  • Peak concurrent user (Hourly sessions x Average sessions Duration / 3600)
  • Peak page views per second

 

The values you need to find or estimate are:

  • Peak daily page views
  • Peak hourly page views
  • Total page view for period
  • Peak hourly sessions
  • Total amount of sessions
  • Average session duration in seconds

As you can see, we mainly focus on the peak activity, because you test with the worst-case scenario in mind - which is, funnily enough, usually the best-case scenario for your client.

Before we start preparing our test, it is also handy to check which pages receive the most traffic. This benefits the validity of your test scenario.

 

Prepare the tests

For our tests we are going to start out with Apache JMeter, which you can grab here.

With JMeter you can test many different applications/server/protocol types, but we’re going to use it to make a whole lot of HTTP requests.

Make sure you have the required Java library and go boot up the ApacheJMeter.jar file.

 

Adding and configuring a Thread Group

Start by adding a Thread Group to your test plan by right clicking your Test plan and selecting Add > Threads (Users) > Thread Group

Thread group

 

Eventually you will need to fill in the number of (concurrent) users and ramp-up period based on your analysis, but for now keep it low for debugging your test.

 

Adding and configuring User-Defined Variables

Then right click the thread group to add User Defined Variables (Add > Config Element > User Defined Variables).

Add two variables named url and protocol and assign them a value.

User-defined variables - examples

Using these user-defined variables makes it easy to choose another environment to test on. It avoids the painstaking and error-prone work of finding all references and changing them manually.

You can use these variables in input fields in your test by doing this: ${url} or ${protocol}

 

Adding and configuring HTTP config elements

 Next up, you need to add the following HTTP config elements to your thread group:

  • HTTP Request Defaults
  • HTTP Header Manager
  • HTTP Cookie Manager

On the first one, you use your variables to fill in the protocol and the server name.

On the second one, you can set default headers for each one of your requests. See the screenshot below for what I’ve put in default.

HTTP config elements

For the third one, you only select cookie policy: standard.

 

A simple page request sampler

Right-click your test again and add the HTTP request sampler (Add > Sampler > HTTP Request).

Here we are going to call the home page. The only things you need to set here are:

  • Method: GET
  • Path: /

We don’t fill in the protocol or server name because this is already covered by our HTTP Request Defaults.

 

Posting the contact form

In this one we are going to submit the contact form (which is located at www.example.com/contact), so add another HTTP Request like we did before. Now only fill in the following values:

  • Method: POST
  • Path: /contact
  • Follow redirects: True
  • Use KeepAlive: True

In order for Drupal to accept the submit, we need to add some parameters to our post, like this:

Contact form parameters

The important ones here are form_build_id and form_id. You can manually get the form id because it always stays the same. The form build ID can vary, so we need to extract this from the page. We’ll do this using the CSS/JQuery Extractor (right-click your HTTP Request sampler: Add > Post Processors > CSS/JQuery Extractor)

Configure it like the screenshot below:

JQuery extractor example

It will now get that form_build_id from the page and put into a variable the sampler can use.$

 

Posting some Ajax on the form

Imagine our contact form has some Ajax functionality and we also want to test this. The way we go about it is identical to posting the regular form like we did before. The only difference is the post parameters, the path and an extra HTTP Header Manager.

You should set the path in your sampler to: /system/ajax

Then right click your sampler to add your new HTTP Header Manager (Add > Config Element > HTTP Header Manager). Configure it like shown in the screenshot:

adding Ajax - example  Saving the results of your test

Now that we’ve configured samplers, we need to add some listeners. You can add these listeners everywhere, but in our example we’ve added it to the test in a whole.

 

We’ll add three listeners:

  • View Results in Table:
    • Show every request in a table format
    • Handy for getting some metrics like latency and connect time
  • Simple Data Writer:
    • Writes test data to a file
    • Handy for debugging when using Blazemeter (check out this link)
    • Just load the file into the View Results Tree
  • View Results Tree:
    • It shows you the actual response and request.
    • Uses a lot of resources (so only good for debugging)

 

There is a lot more you can do with JMeter. You can read all about it here.


Test-run the test

Now that we’ve configured our test it is time to try it out. So make sure not to put too much concurrent users in there. Just run the test by pressing the green ‘Play’ icon.

Test run

If you get errors, debug them using the feedback you got from your listeners.

As this wise man once said: "Improvise. Adapt. Overcome."

After you’ve validated your test, it’s always handy to turn up the concurrent users until your local site breaks. It’ll give you a quick idea of where a possible bottleneck could be.

Just a small warning: doing that load test on your local machine (running the test and the webserver) will take up a lot of resources and can give you skewed results.

You can download an example here.

 

Set up tools Load testing with Blazemeter

When you have a project that will have a lot of concurrent users, your computer is most likely not able to handle doing all those calls and that is why it is good to test from a distributed setup like Blazemeter does.

 

You can have multiple computers running the same test with only a part of the concurrent users or you can pay for a service like Blazemeter.

 

The downside of using multiple computers is that they still use the same corporate WiFi or ethernet, blocking yourself possibly to the lowest common denominator, which is most likely unknown and could cause trouble that might skew your test. On top of that you will also have to aggregate all those results yourself, costing you precious time.

 

For us the mayor benefits of Blazemeter are the following:

  • Simulate a massive amount of concurrent users with little hassle
  • Persistence of test results and comparison between tests
  • Executive report to deliver to a technical savvy client
  • Sandbox mode tests that don’t count against your monthly testing quota

 

Adding your JMeter test in Blazemeter is very easy and straightforward. Just click ‘Create Test’ in the menu and select JMeter Test.

Blazemeter screenshot

Upload the file and you can start to configure your test to reflect your test scenario from the analysis chapter. We suggest to choose to ‘Originate a load’ from a service that is closest to your target population.

Blazemeter - load test set-up screenshot

Before you run your test, it is important to have set up your monitoring of the environment you want to test.

 

Monitoring performance

At Dropsolid, we like to use New Relic to monitor performance of our environments but you could also use open source tools like Munin.

The most important factors in your decision of monitoring tool should be:

  • Persistence of monitoring data
  • Detail of monitoring data
  • Ease of use

If you are using New Relic, we recommend to install both APM and Server. The added value of having APM is that you can quickly get an overview of possible bottlenecks in PHP and MySQL.

 

Run the test

Now that everything is set up, it is important to have an environment that is a perfect copy of your production environment. That way you can easily optimize your environment without having to wait for a good moment to restart your server.

Run your test, sit back and relax.

 

Analyse the results

If everything has gone according to plan, you should now have reports from both Blazemeter and New Relic.

Blazemeter test reportBlazemeter report of a test of 854 concurrent usersNew relic monitoring during the same testNew Relic monitoring during the same test

If your server was able to handle the peak amount of users, then your job is done and you can inform the client that they can rest assured that it won’t go down.

If your server couldn’t handle it, it is time to compare the results from Blazemeter and New Relic to find out where your bottleneck is.

Common issues are the following:

  • Not the right memory allocation between parts of the stack.
  • Misconfiguration of your stack. For example, MySQL has multiple example configuration files for different scenarios
  • Not using extra performance enhancing services like varnish, memcache, redis,...
  • Horrible code

If the issue is horrible code, then use tools like xhprof or blackfire.io to profile your code.

Need expert help with your performance tests? Just get in touch!

Contact us for performance testing 


Final note

As Colin Powell once said: "There are no secrets to success. It is the result of preparation, hard work and learning from failure." That is exactly what we did here: we prepared our test thoroughly, we tested our script multiple times and adapted when it failed.

Dropsolid: Load testing Drupal with Blazemeter and JMeter

Feeds from Drupal.org - Tue, 2017-10-17 09:59
Load test stress meter 17 Oct Load testing Drupal with Blazemeter and JMeter Niels A Tech

When going live with a big project, it is all about reassuring the client that the project will be able to handle all those excited visitors. To achieve that state of zen, it is paramount that you do a load test. The benefits of load tests go beyond peace of mind, however. For example, it enables you to spot issues that only happen during high load or let’s you spot bottlenecks in the infrastructure setup. The added bonus is that you can bask in the glory of your high-performance code - on the condition the test doesn’t fail, of course.

Need help with your load and performance testing?
Contact us 

 

When doing a load test it is important to do the following steps:

  • Analyse existing data
  • Prepare tests
  • Set up tools
  • Run the tests
  • Analyse the results

 

Analyse existing data

If you are in luck, you will already  have historic data available to use from Google Analytics. If this isn’t the case, you’ll have to get in touch with your client and ask a few to-the-point questions to help you estimate all the important metrics that I’ll be covering in this post.

 

A couple of tips I can give if you lack the historic data:

  • Ask if the client has a mailing (digital or old-school) list and how many people are on it
  • If you have made comparable sites in the past, look at their Google Analytics data
  • Ask the client how they are going to announce their new website
  • When you are working on an estimate, it is always better to add an extra 15% to it. Better safe than sorry!

The first thing you need to do, is set a reference frame. Pick a date range that has low activity as well as the highest activity you can find. Then start putting that data into a spreadsheet, as pictured below:

An example spreadsheet for load testingYou can download an example copy of the file here

 

The most important metrics we are going to calculate are:

  • Peak concurrent user (Hourly sessions x Average sessions Duration / 3600)
  • Peak page views per second

 

The values you need to find or estimate are:

  • Peak daily page views
  • Peak hourly page views
  • Total page view for period
  • Peak hourly sessions
  • Total amount of sessions
  • Average session duration in seconds

As you can see, we mainly focus on the peak activity, because you test with the worst-case scenario in mind - which is, funnily enough, usually the best-case scenario for your client.

Before we start preparing our test, it is also handy to check which pages receive the most traffic. This benefits the validity of your test scenario.

 

Prepare the tests

For our tests we are going to start out with Apache JMeter, which you can grab here.

With JMeter you can test many different applications/server/protocol types, but we’re going to use it to make a whole lot of HTTP requests.

Make sure you have the required Java library and go boot up the ApacheJMeter.jar file.

 

Adding and configuring a Thread Group

Start by adding a Thread Group to your test plan by right clicking your Test plan and selecting Add > Threads (Users) > Thread Group

Thread group

 

Eventually you will need to fill in the number of (concurrent) users and ramp-up period based on your analysis, but for now keep it low for debugging your test.

 

Adding and configuring User-Defined Variables

Then right click the thread group to add User Defined Variables (Add > Config Element > User Defined Variables).

Add two variables named url and protocol and assign them a value.

User-defined variables - examples

Using these user-defined variables makes it easy to choose another environment to test on. It avoids the painstaking and error-prone work of finding all references and changing them manually.

You can use these variables in input fields in your test by doing this: ${url} or ${protocol}

 

Adding and configuring HTTP config elements

 Next up, you need to add the following HTTP config elements to your thread group:

  • HTTP Request Defaults
  • HTTP Header Manager
  • HTTP Cookie Manager

On the first one, you use your variables to fill in the protocol and the server name.

On the second one, you can set default headers for each one of your requests. See the screenshot below for what I’ve put in default.

HTTP config elements

For the third one, you only select cookie policy: standard.

 

A simple page request sampler

Right-click your test again and add the HTTP request sampler (Add > Sampler > HTTP Request).

Here we are going to call the home page. The only things you need to set here are:

  • Method: GET
  • Path: /

We don’t fill in the protocol or server name because this is already covered by our HTTP Request Defaults.

 

Posting the contact form

In this one we are going to submit the contact form (which is located at www.example.com/contact), so add another HTTP Request like we did before. Now only fill in the following values:

  • Method: POST
  • Path: /contact
  • Follow redirects: True
  • Use KeepAlive: True

In order for Drupal to accept the submit, we need to add some parameters to our post, like this:

Contact form parameters

The important ones here are form_build_id and form_id. You can manually get the form id because it always stays the same. The form build ID can vary, so we need to extract this from the page. We’ll do this using the CSS/JQuery Extractor (right-click your HTTP Request sampler: Add > Post Processors > CSS/JQuery Extractor)

Configure it like the screenshot below:

JQuery extractor example

It will now get that form_build_id from the page and put into a variable the sampler can use.$

 

Posting some Ajax on the form

Imagine our contact form has some Ajax functionality and we also want to test this. The way we go about it is identical to posting the regular form like we did before. The only difference is the post parameters, the path and an extra HTTP Header Manager.

You should set the path in your sampler to: /system/ajax

Then right click your sampler to add your new HTTP Header Manager (Add > Config Element > HTTP Header Manager). Configure it like shown in the screenshot:

adding Ajax - example  Saving the results of your test

Now that we’ve configured samplers, we need to add some listeners. You can add these listeners everywhere, but in our example we’ve added it to the test in a whole.

 

We’ll add three listeners:

  • View Results in Table:
    • Show every request in a table format
    • Handy for getting some metrics like latency and connect time
  • Simple Data Writer:
    • Writes test data to a file
    • Handy for debugging when using Blazemeter (check out this link)
    • Just load the file into the View Results Tree
  • View Results Tree:
    • It shows you the actual response and request.
    • Uses a lot of resources (so only good for debugging)

 

There is a lot more you can do with JMeter. You can read all about it here.


Test-run the test

Now that we’ve configured our test it is time to try it out. So make sure not to put too much concurrent users in there. Just run the test by pressing the green ‘Play’ icon.

Test run

If you get errors, debug them using the feedback you got from your listeners.

As this wise man once said: "Improvise. Adapt. Overcome."

After you’ve validated your test, it’s always handy to turn up the concurrent users until your local site breaks. It’ll give you a quick idea of where a possible bottleneck could be.

Just a small warning: doing that load test on your local machine (running the test and the webserver) will take up a lot of resources and can give you skewed results.

You can download an example here.

 

Set up tools Load testing with Blazemeter

When you have a project that will have a lot of concurrent users, your computer is most likely not able to handle doing all those calls and that is why it is good to test from a distributed setup like Blazemeter does.

 

You can have multiple computers running the same test with only a part of the concurrent users or you can pay for a service like Blazemeter.

 

The downside of using multiple computers is that they still use the same corporate WiFi or ethernet, blocking yourself possibly to the lowest common denominator, which is most likely unknown and could cause trouble that might skew your test. On top of that you will also have to aggregate all those results yourself, costing you precious time.

 

For us the mayor benefits of Blazemeter are the following:

  • Simulate a massive amount of concurrent users with little hassle
  • Persistence of test results and comparison between tests
  • Executive report to deliver to a technical savvy client
  • Sandbox mode tests that don’t count against your monthly testing quota

 

Adding your JMeter test in Blazemeter is very easy and straightforward. Just click ‘Create Test’ in the menu and select JMeter Test.

Blazemeter screenshot

Upload the file and you can start to configure your test to reflect your test scenario from the analysis chapter. We suggest to choose to ‘Originate a load’ from a service that is closest to your target population.

Blazemeter - load test set-up screenshot

Before you run your test, it is important to have set up your monitoring of the environment you want to test.

 

Monitoring performance

At Dropsolid, we like to use New Relic to monitor performance of our environments but you could also use open source tools like Munin.

The most important factors in your decision of monitoring tool should be:

  • Persistence of monitoring data
  • Detail of monitoring data
  • Ease of use

If you are using New Relic, we recommend to install both APM and Server. The added value of having APM is that you can quickly get an overview of possible bottlenecks in PHP and MySQL.

 

Run the test

Now that everything is set up, it is important to have an environment that is a perfect copy of your production environment. That way you can easily optimize your environment without having to wait for a good moment to restart your server.

Run your test, sit back and relax.

 

Analyse the results

If everything has gone according to plan, you should now have reports from both Blazemeter and New Relic.

Blazemeter test reportBlazemeter report of a test of 854 concurrent usersNew relic monitoring during the same testNew Relic monitoring during the same test

If your server was able to handle the peak amount of users, then your job is done and you can inform the client that they can rest assured that it won’t go down.

If your server couldn’t handle it, it is time to compare the results from Blazemeter and New Relic to find out where your bottleneck is.

Common issues are the following:

  • Not the right memory allocation between parts of the stack.
  • Misconfiguration of your stack. For example, MySQL has multiple example configuration files for different scenarios
  • Not using extra performance enhancing services like varnish, memcache, redis,...
  • Horrible code

If the issue is horrible code, then use tools like xhprof or blackfire.io to profile your code.

Need expert help with your performance tests? Just get in touch!

Contact us for performance testing 


Final note

As Colin Powell once said: "There are no secrets to success. It is the result of preparation, hard work and learning from failure." That is exactly what we did here: we prepared our test thoroughly, we tested our script multiple times and adapted when it failed.

Categories: Straight From Drupal

GraphQL Twig

Latest Drupal Modules - Tue, 2017-10-17 09:02
Categories: Straight From Drupal

GraphQL XML

Latest Drupal Modules - Tue, 2017-10-17 09:01
Categories: Straight From Drupal

GraphQL JSON

Latest Drupal Modules - Tue, 2017-10-17 08:59
Categories: Straight From Drupal

Drupal Mexico: Buena suerte en Actualizar a drupal 8.4.0

Feeds from Drupal.org - Mon, 2017-10-16 23:47

Primero lo primero, Ya salio drupal 8.4.0. Una actualización con varios avances esperados, por ejemplo una versión más integrada y terminada de el módulo de media.

La cuestion es que parace que ahora los cambios de versiones entre un numero y otro en drupal 8 son grandes cambios y no resulta tan facil de actualizar (hasta versión de drush se tiene que actualziar).

por suerte algunas personas empiezan a documentar como hacerlo. como es es el caso de Adam Bramley que saca este artículo

sobre su experiencia actualizando.

https://www.previousnext.com.au/blog/update-drupal-core-84-step-by-step-...

 

(que nos pueden decir los usuarios de drupal console sobre esta actualización?)

Versión: Drupal 8Categorias: Noticias
Categories: Straight From Drupal

matrixchat

Latest Drupal Modules - Mon, 2017-10-16 21:18

Project space for matrix integration.

Categories: Straight From Drupal

Professional Services Debuts Node.js Application for Acquia Engage

Acquia Blogs - Mon, 2017-10-16 20:02

Last month, Acquia announced that it expanded Acquia Cloud to support Node.js, the popular open source JavaScript runtime.. As a member of Acquia’s Professional Services team, it’s been exciting to learn more about the new Node.js hosting offering and the technical opportunities that it offers. The PS team also learned that the timing of the Acquia Engage conference was going to align nicely with Acquia’s new offering, and we viewed this as an opportunity to create something unique for the conference.

Acquia’s Node.js hosting gives developers the ability to create a fully decoupled Drupal architecture. We took a step back and reviewed options for creating an application that would make use of Node.js’ strengths and relate to the conference. The core focus of any conference is the presentation lineup, so we focused our efforts around building an application that could provide attendees with real-time schedule lineups and agenda logistics. To do this, Acquia’s Professional Services team set out to build a Node.js application that would control the content displayed on digital signs throughout the the conference center.

What is Decoupled Drupal Again?

A decoupled architecture allows developers to utilize any technology to render the front-end experience (“the glass,” where a user interacts with an application) in lieu of the theming and presentation layers that come with a coupled CMS out-of-the-box. In a decoupled Drupal architecture, the Drupal back end exposes content to other front-end systems, such as native mobile applications, conversational UIs, applications built in JavaScript frameworks, or digital signs.

At a high-level, a “headless” or “decoupled” Drupal website utilizes a secondary application to present data visually. The second application introduces a new level of technical freedom and opportunity on multiple levels. For example, decoupled projects provide the freedom to choose JavaScript frameworks, where real-time data and speed are a major strength. This gives technical leads flexibility to choose the tools that best suit the scope of their project.

Some of Acquia’s customer’s have already been taking advantage of decoupled Drupal to support a variety of use cases. POWDR Resorts is using decoupled Drupal to power JavaScript front ends, while Princess Cruises is using a decoupled Drupal build to serve content to digital signage onboard their ships.

How the Acquia Engage Node.js Application Works

The architectural workflow of the Engage Node.js application consists of two separate codebases. One is a Drupal backend and the other is a Node.js application using Ember to present the UI.

The Drupal 8 back-end application was built using the Lightning sub-profile “headless Lightning”. The “headless Lightning” distribution extends the efforts of the Reservoir and Contenta projects, by focusing on the ability to quickly serve API content for ingestion by decoupled applications. Acquia’s marketing team can use the intuitive and familiar Drupal UI to create and manage content, including session presentations, case studies, and testimonials. With an emphasis on authoring experiences, marketing teams can easily manage Drupal content without extensive technical expertise.

Drupal UI
In the Drupal UI, Acquia’s marketing team can create content for Lynne Capozzi’s “Welcome” presentation. This content will be displayed on digital signs throughout the conference through the Ember.js front end.

The front-end application uses Ember for its UI and Ember Data to consume data the Drupal API. Node.js serves the Ember application and pre-renders the application’s HTML. For example, Engage attendees can learn more about Lynne Capozzi's ‘Welcome’ presentation, which is displayed on the top left section of the screen. This is the same piece of content that was being created in the Drupal UI. Now, it’s being displayed by Ember.js the front end.

conference screen

This separation of concerns allowed us to rely on the respective strengths of both Drupal and Node.js to build the application. The end result is a superior experience for both conference visitors and Acquia’s marketing team.

What should Engage conference attendees expect to see?

Attendees of the conference will be able to see the Acquia Engage application on various screens throughout the InterContinental Hotel. The application will display real-time session information, such as the time and location of presentations. The session and speaker information will be the main focus of the left content rail, and this data will be animated according to the active sessions. The main content area will feature award finalists, case studies, and interesting facts related to the conference. The content footer will present session data in a scrolling ticker, which is animated for a fluid display.

If you are interested in learning more about the Acquia Engage Node.js application, check out Beth Linker’s presentation at Acquia Engage: Decoupled Drupal and JavaScript: The What and Why of the Trend. Beth will be taking the stage at 11:30 a.m. on Wednesday to share how you can get the most out of Acquia Cloud by using Node.Js.

Special thanks to Brian Reese and Dane Powell for helping to write this blog, and thank you to the Professional Services’ Node Tiger team for developing our Engage Node.js application.

Categories: Drupal Universe

Pages

Subscribe to My Drupal aggregator